依赖倒置原则(DIP),The Dependency Inversion Principle
定义
1、高层模块不应该依赖低层模块,两都应该依赖于抽象。
2、抽象不依赖于具体细节。
3、具体细节应该依赖于抽象。
抽象就是指接口或者抽象类,细节是指实现接口或者抽象类的具体实现类。
也就是说模块之间的依赖通过接口或抽象发生的,两个实现细节之间不能直接发生依赖,接口不能依赖实现,实现应该依赖抽象。
我们在进行分布式系统开发时,比如常用的dubbo框架,各个系统的连接都是通过接口发生的,只要依赖对方的接口就行了,而不需要知道对方的实现,更不可能依赖对方的实现类,在实际开发中只要其他模块的人把接口定义好就行了,先按接口提供的参数开发,等真正实现类都开发完了再一起联调。其他两条就更好理解了,依赖都只能依赖其抽象,而不是具体实现类。
所以,采用依赖倒置原则最大的特点是减少了类与类之间的耦合性,良好的支持各个模块并行开发互不影响,也提高了系统的可读性、可维护性和可扩展性。