オブジェクト指向のこころ 第14章の練習問題の解答をまとめてみる。
基礎
設計の実装方法を選択する場合,どういったことを考えるべきでしょうか?
複数の実装から適切なものを選ぶ場合,多くの開発者は「どの実装が優れているのか」という疑問をもつ.しかし,これは適切な疑問ではない.ある実装が他の実装より常に優れているというわけではない.持つべき疑問は,実装ごとに「この実装は,どういった状況において他の実装よりも優れているのか」となる.その後,「自分自身の抱えている問題領域に最も近い状況はどれなのか」と考えることになる.
(p.228)
デザインパターンには5つの落とし穴があります.それらを挙げてください.
- 表層的理解
- 思い込み
- 選択ミス
- 誤診
- 当てはめ
(p.232)
応用
開放/閉鎖原則では,「モジュール,メソッド,クラスは,拡張性という観点から見た場合,見通しの効くようになっているべきであり,変更という観点から見た場合,閉鎖的になっているべきである」と述べられています.これはどういう意味でしょうか?
Bertrand Meyerは,システムを変更する際のリスクを最小にする方法として,開放/閉鎖原則を推し進めた. その内容として,ソフトウェアは変更することなく拡張できるように設計するべきであると述べている.
Bridgeパターンにおける開放/閉鎖原則を説明してください.
例えばBridgeパターンでは,既存クラスに一切手を加えることなく,新たな実装を追加できる. Open-Closed Principleの本質的な意味合いは,新たな機能を個別に,すなわちモジュール化された形で追加していけるようにすることで,結合コストを最小化したソフトウェア設計にするということである.