オブジェクト指向のこころ 第25章の練習問題の解答をまとめてみる。
基礎
パターンには,実装を隠蔽するという性質を持ったものがあります.何から実装を隠蔽するのでしょうか?また,それは何と呼ばれるのでしょうか?例を挙げてください.
クライアントオブジェクトから実装を隠蔽する. このことをカプセル化と呼ぶ. Bridgeはその一つの例であり,クライアントから抽象クラスから派生したクラスの実装が分からないようになる.
パターンによって,責務の分割についての考察が深められる例を挙げてください.
例えば,Decoratorパターンは,常に必要となる責務(ConcreteComponent)と任意に発生する流動的な責務(Decorator)に問題領域を分割することが可能となる.
(p.344)
パターンを学習する際に探すべき5つのフォースと概念を答えてください.
- このパターンが隠蔽しているのはどのような実装か?
- このパターンにはどういった共通性が存在しているか?
- このパターンにおけるオブジェクトの責務は何か?
- これらのオブジェクト間にある関係は何か?
- パターン自体は,どのようにしてコンテキストに基づく設計を具体化しているか?
応用
実装を隠蔽する価値を答えてください.
パターンによって実装を隠蔽することで,クライアントオブジェクトは,現在の実装についての詳細を関知する必要がなくなる.このため,簡単に新たな実装を追加できるようになる.
(p.342)