オブジェクト指向のこころ 第6章の練習問題の解答をまとめてみる。
基礎
Facadeを定義してください
facadeとはthe front of a building.(http://www.dictionary.com/browse/facade?s=t)
屋内と通りを分離するフロントのこと.
(p.89)
Facadeパターンの目的は何でしょうか?
既存システムの使用方法を簡略化するために,インターフェースを提供すること
(p.86)
Facadeパターンの因果関係とは何でしょうか?例を挙げてください.
Facadeは要求されたサブシステムの使用方法を簡略化して提供する.
しかしFacadeはすべての機能を提供するものではないため,ある種の機能はクライアントから利用できない可能性がある.
(p.90)
たとえば,データベースの一部へのアクセスを定期的に行う通知アプリがあったときに, Facadeを使うと,データベースの全体へのAPIではなく,一部へのアクセスのためのAPIを使える.
Facadeパターンにおいて,クライアントはどのようにしてサブシステムと協調するのでしょうか?
クライアントはFacadeのインターフェースを通じてサブシステムと協調する. サブシステム内のメソッドを直接呼び出すことはない.
Facadeパターンを使った場合,通常はシステム全体にアクセスできるようになるのでしょうか?
通常はできない. 一般的に,Facadeを使うときにはシステムの一部へのアクセスができる.
応用
GoFはFacadeパターンの目的を「サブシステム内に存在している複数のインターフェース群に対する,統一したインターフェースを提供する.Facadeは高レベルのインターフェースを提供することにより,サブシステムを用意に使えるようにするものである」と述べています.
- この意味を説明してください
- 例を挙げてください
Facadeは,facadeはすでに存在しているシステムにアクセスするための方法として,ユーザに応じてカスタマイズしたインターフェースを提供する.
例として,データベースシステムからクライアントプログラムを分離するなどが考えられる.
以下はソフトウェアとは関係ないFacadeの例です:アメリカ国内にあるガソリンスタンドの給油装置は,支払い方法,給油する燃料の種類,広告表示等多くのオプションがあり,非常に複雑なものとなっています.このインターフェースを統一する方法の一つは,スタンドの係員に任せてしまうことです.州によっては係員の操作が義務付けられているところもあります.
- 実生活におけるFacadeの例をもう一つ挙げてください
複雑な株取引システムへ,ブローカーがアクセスするためのインターフェースなど.