『実践ソフトウェアエンジニアリング』メモ#
Ch11. コンポーネント設計#
コンポーネント:ソフトウェアを構成するモジュール性の高い部品
オブジェクト指向における基本的な設計の原則#
OCP: Open-Closed Principle#
モジュールは拡張に対して開いて(open)いなければならず、変更に対して閉じて(close)いなければならない
例えば「決済手段」などのあとから新規追加されうるものによる処理の条件分岐をif-elseで実装すると、新たな選択肢の追加でif文を変える必要があるが、各決済手段を共通するインターフェースのclassにしていれば、新しいclassの追加だけで済む
リスコフの置換原則(LSP)#
派生クラスは基底クラスと置換可能でなければならない
依存性逆転の原則(DIP)#
抽象に依存し、具象に依存させない。
コンポーネントが別のコンポーネントの具象に依存すると、拡張は難しくなる。
インターフェース分離の原則#
それぞれのクライアントごとに専用のインターフェースを提供するほうが、単一の汎用的なインターフェースを提供するよりよい