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