第25章: デザインパターンのおさらい
基礎
Q1. パターンには、実装を隠蔽するという性質を持ったものがあります。何から実装を隠蔽するのでしょうか?また、それは何と呼ばれるのでしょうか?例をあげてください。
A1.
・対象:クライアントオブジェクト
・呼び方:カプセル化
・例:Bridgeパターンでは、Abstractionあから派生したクラスの実装方法が、クライアントから隠蔽される。
Q2. パターンによって、責務の分解についての考察が深められる例をあげてください。
A2.
- Decoratorパターンでは、常に必要となる責務(Concrete Component)と任意に発生する流動的な責務(Decorator)に問題領域を分解することが可能
- Strategyパターンを考えることによって、規則を使用するオブジェクト(どの規則を使用するかに関係なく)と規則自体に問題領域を分解する。
Q3. パターンを学習する際に探すべき5つのフォースと概念を答えてください。
A3.
・このパターンが隠蔽しているのはどのような実装化?
・このパターンにはどういった共通性が存在しているか?
・このパターンにおけるオブジェクトの責務は何か?
・これらのオブジェクト間にある関係は何か?
・パターン自体は、どのようにしてコンテキストにもとづく設計を具体化しているか?
応用
Q1. 実装を隠蔽する価値を答えてください。
A1. クライアントオブジェクトは、現実の実装についての詳細を関知する必要がなくなり、簡単にあらたな実装を追加できるようになる。