固体中のDの再訪


パヴェNorkoranecによる写真
これはソリッドの続きです.最後のポストでは、私は私をカバーし、今私たちは最後のDを続けているので、最後の投稿をチェックしていない場合は、リンクをクリックしてください.

依存性反転原理


依存反転原理は開いた/閉じた原理とliskov置換原理に基づいている.そして、それは高レベルモジュールが低レベルモジュールに依存してはならないと基本的に述べます.
簡単に言えば、具体的なものに依存することはなく、詳細に依存するだけではなく抽象化に依存するだけである.

あなたが写真で見るように、反転は低レベルモジュールが現在高いレベルに依存することを意味しません.従来のアプリケーションアーキテクチャでは、低レベルコンポーネントは、高レベルコンポーネントによって消費されるように設計されている.
単純な例のための時間、右?
public class SteelWheel {
//properties and methods
}
public class Car {

public Car (SteelWheel wheel) { 

}
}
ご覧の通り、車のクラスは車輪の具体的な実装に頼らざるを得ません.そして、我々の原理は、何を言いますか?

Never depend on anything concrete, only depend on abstractions
We did violate our principle, right?


さて、あなたは今疑問に思うかもしれない、ああ、車のクラスは良い、なぜ私はこれを気にすべきですか?
MMMM、良い質問が、私と想像してください.あなたは1日、alloywheelにあなたのスチールホイールを変更する必要があります.自動車のクラスはどうするのですか.
私は、あなたが私のポイントを得ていることを望みます.
車のクラスは、使用されている車輪を気にするべきではありません.
public interface Wheel {
}
public class SteelWheel implements Wheel {
//properties and methods
}
public class Car {

public Car (Wheel wheel) { 

}
}
そして、それは低レベルモジュールとハイレベルのものが抽象化に依存する方法です.

結論


私は、このシリーズが役に立ったことを望みます.あなたに良い一日を祈ります!

ソース


https://en.wikipedia.org/wiki/Dependency_inversion_principle
ロバート・C・マーティン「森の原理」
オブジェクト指向ソフトウェア構築、第2版
http://www.cvc.uab.es/shared/teach/a21291/temes/object_oriented_design/materials_adicionals/principles_and_patterns.pdf