依存性反転の原則

dependency-inversion-principle.png
dependent.png
依存性の注入とも似ている

抽象に依存する。具象クラスに依存してはいけない[4]

この原則は、
実装に対してではなくインタフェースに対してプログラミングする
という原則に非常に似ているように感じられます。
この原則は、高水準コンポーネントは低水準コンポーネントに依存すべきではなく、むしろどちらも抽象に依存すべきであることを示唆しています。
依存性反転の法則と言う

この原則に従うために役立つ指針

指針 対策
具象クラスへの参照を保持する変数を持たない ファクトリを使って回避する
具象クラスからクラスを継承しない インタフェース抽象クラスを継承する
どのベースクラスの実装済みのメソッドもオーバーライドしない。 ベースクラスで実装済みのメソッドは、すべてのサブクラスで共有されることを目的とする。オーバーライドしたら意味がない。オーバーライドするならベースは抽象クラスにすること

え、これ全部従うのってむりーーー。
そう。
記述したクラスが変更される可能性が低い場合は、この指針に違反してもいい。
全体の対策としては、
Factory-Methodやその他、変更をカプセル化する、などの対策がある。

サポートサイト Wikidot.com