依赖倒置原则

2022-09-21 10:11:00 浏览数 (1)

依赖倒置原则

定义

高层模块不要依赖低层模块,应该通过抽象来互相依赖。除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象。

个人理解

避免对具体实现类的直接引用,使其付出更小的代价达到扩展的目的,与开闭原则照应。

缺点也是老生常谈的类文件数量增加,可维护性下降。所以要在适当场景使用,切勿过度设计。例如service层定义接口,实际项目中,大部分service只有单一实现,没有定义接口的必要。

示例一

控制反转是一种思想,用来指导框架层面的设计。“控制”指的是对程序执行流程的控制,“反转”指的是由程序员控制转为框架控制。

依赖注入是控制反转具体的一种实现,通过构造函数、set方法将依赖对象注入。依赖注入框架不只有Spring,还有很多,例如Google Guice

示例二

Tomcat和web应用,Tomcat是高层模块,web应用是底层模块。两者没有直接依赖,而是依赖于Servlet规范。

Servlet规范不依赖于Tomcat容器和web应用程序的具体实现。

“基于接口而非实现编程”跟“依赖注入”的联系和区别

联系

两者都是从外部传入对象。

区别

前者强调的是接口,遵守协议,不依赖于具体实现。后者强调的是对象的创建在外部,而不是内部new出来的。

0 人点赞