『実践ソフトウェアエンジニアリング』メモ#

Ch11. コンポーネント設計#

コンポーネント:ソフトウェアを構成するモジュール性の高い部品

オブジェクト指向における基本的な設計の原則#

OCP: Open-Closed Principle#

モジュールは拡張に対して開いて(open)いなければならず、変更に対して閉じて(close)いなければならない

例えば「決済手段」などのあとから新規追加されうるものによる処理の条件分岐をif-elseで実装すると、新たな選択肢の追加でif文を変える必要があるが、各決済手段を共通するインターフェースのclassにしていれば、新しいclassの追加だけで済む

リスコフの置換原則(LSP)#

派生クラスは基底クラスと置換可能でなければならない

依存性逆転の原則(DIP)#

抽象に依存し、具象に依存させない。

コンポーネントが別のコンポーネントの具象に依存すると、拡張は難しくなる。

インターフェース分離の原則#

それぞれのクライアントごとに専用のインターフェースを提供するほうが、単一の汎用的なインターフェースを提供するよりよい