単一責任の原則
Single Responsibility Principle
すべてのクラスは、それぞれ1つの責任のみを持つべきである。
開閉原則
Open Closed Principle
メンテナンスの際、既存のコードへの変更は最小限に抑え、拡張が容易でなければならない。
リスコフの置換の原則
Liskov Substitution Principle
オブジェクトは、プログラムの正確性を損なうことなく、サブタイプのインスタンスと置き換え可能でなければならない。つまり、継承が問題なく機能するようにしなければならないという意味である。
インターフェース分離の原則
Interface Segregation Principle
1つの一般的なインターフェースの代わりに、具体的な複数のインターフェースを作成すること
依存性反転の原則
Dependency Inversion Principle
上位層は下位層の変化から独立していなければならない。自分よりも変化しやすいものに影響を受けないよう、上位クラスや抽象インターフェースを配置すべきである。