オブジェクト指向のこころー演習問題(第8部)


第25章: デザインパターンのおさらい

基礎

Q1. パターンには、実装を隠蔽するという性質を持ったものがあります。何から実装を隠蔽するのでしょうか?また、それは何と呼ばれるのでしょうか?例をあげてください。
A1.
・対象:クライアントオブジェクト
・呼び方:カプセル化
・例:Bridgeパターンでは、Abstractionあから派生したクラスの実装方法が、クライアントから隠蔽される。

Q2. パターンによって、責務の分解についての考察が深められる例をあげてください。
A2.
1. Decoratorパターンでは、常に必要となる責務(Concrete Component)と任意に発生する流動的な責務(Decorator)に問題領域を分解することが可能
2. Strategyパターンを考えることによって、規則を使用するオブジェクト(どの規則を使用するかに関係なく)と規則自体に問題領域を分解する。

Q3. パターンを学習する際に探すべき5つのフォースと概念を答えてください。
A3.
・このパターンが隠蔽しているのはどのような実装化?
・このパターンにはどういった共通性が存在しているか?
・このパターンにおけるオブジェクトの責務は何か?
・これらのオブジェクト間にある関係は何か?
・パターン自体は、どのようにしてコンテキストにもとづく設計を具体化しているか?

応用

Q1. 実装を隠蔽する価値を答えてください。
A1. クライアントオブジェクトは、現実の実装についての詳細を関知する必要がなくなり、簡単にあらたな実装を追加できるようになる。