オブジェクト指向のこころ 第20章の練習問題の解答をまとめてみる。
基礎
「ファクトリ」を定義してください.
オブジェクト生成のためにオブジェクト.
(p.297)
以前の章で解説したファクトリパターンの名前を答えてください.この章で言及したファクトリパターンの名前を答えてください.
Abstract Factory(11章).
この章では,Builder,Factory Method,Prototype,Singletonに言及した.
オブジェクトの生成,管理が必要となった際に使用する一般規則を答えてください.
オブジェクトは他のオブジェクトを生成・管理するか,他のオブジェクトを使用するかのどちらかのみ行い,双方を行ってはいけない.
応用
オブジェクト指向プログラミングを初めて間もない開発者は,オブジェクトの生成管理とオブジェクトの実体化をごちゃまぜに考えがちです.これによって生み出される問題を答えてください.
凝集性が低くなる. あるオブジェクトを使用するコードが,そのオブジェクトの生成責任をも負っている場合, どのオブジェクトを生成するのか,生成パラメータは何か,生成後はどうやって使用するのかといったことを関知しなければならなくなる.
ファクトリによって凝集度が高くなります.その理由を答えてください.
ファクトリはどのオブジェクトを生成,管理すべきかという規則については関知しており, それらがどう使われるかについては関知しないため.
ファクトリによってテスティング効率が改善されます.それは,どういった場合でしょうか?
使用するオブジェクトは,派生クラスに関係なく同じふるまいを見せることになるため. 派生クラスも独立してテストすることができるようになるため,テストする組み合わせを減らせる.