全てのモジュールとクラスは、一つの役割を提供して責任をもつべきとする原則です。
詳細サンプルコード
クラス、モジュール、関数などのソフトウェアの部品は拡張に対しては開いており、修正に対しては閉じていなければならないとする原則です。
詳細サンプルコード
サブクラスは、そのスーパークラスの代用ができなければならないとする原則です。 (スーパークラスが使えるものは、全てサブクラスでも使えるようにします。)
詳細サンプルコード
インターフェース(抽象クラス)のメソッドが多すぎる場合は、インターフェースを分離します。
詳細サンプルコード
高水準なモジュールは、低水準なモジュールに依存してはいけません。両者は抽象化に依存すべきとする原則です。
依存性逆転の原則を守ることで、低水準のモジュールを継承したクラスを利用した機能拡張が容易になります。