面向对象的设计原则--依赖倒置原则

依赖倒置原则

这是面向对象设计中非常重要的一个原则,它是SOLID原则中的一个,SOLID代表了五个设计原则的首字母缩写,用于指导开发者编写可维护和可扩展的代码。

以下是依赖倒置原则的详细解释:

抽象不应该依赖于细节,细节应该依赖于抽象

这意味着在设计中,我们应该尽量让高层模块(如业务逻辑模块)和低层模块(如数据库访问、文件操作等)都依赖于抽象(如接口或抽象类),而不是让高层模块直接依赖于低层模块的具体实现。这样做的好处是:

  • 提高系统的可维护性:当低层模块的具体实现发生变化时,只要抽象层保持不变,高层模块就不需要做任何修改。
  • 提高系统的可扩展性:当需要替换低层模块的实现时,只需提供一个新的实现,只要它遵循同样的抽象接口,高层模块就可以无缝切换,无需修改。

高层模块与低层模块

  • 高层模块:指的是系统中负责业务逻辑的部分,通常不涉及具体的实现细节。
  • 低层模块:指的是实现了具体功能的部分,例如数据库操作、API调用等。

如何应用依赖倒置原则

  1. 定义接口或抽象类:首先定义高层模块和低层模块之间的抽象接口或抽象类。
  2. 高层模块依赖于抽象:编写高层模块时,让它依赖于这些抽象,而不是具体的实现。
  3. 低层模块实现抽象:编写低层模块时,实现这些抽象接口或抽象类。
  4. 依赖注入:在实际运行时,通过构造函数、方法或属性将低层模块的具体实现注入到高层模块中。

示例

以邮件发送功能为例,按照依赖倒置原则:

  • 定义一个IMailService接口,它包含发送邮件的抽象方法。
  • 高层模块(比如用户注册功能)依赖于IMailService接口,而不是具体的邮件发送实现。
  • 实现一个或多个具体的邮件发送类,比如SmtpMailServiceSendGridMailService等,它们实现IMailService接口。
  • 在系统配置或运行时,将具体的邮件发送服务(如SmtpMailService的实例)注入到高层模块中。

通过这种方式,如果未来需要更换邮件发送服务提供商,只需提供一个新的实现类,无需修改高层模块的代码,从而实现了高层模块和低层模块的解耦。

相关推荐
缘友一世1 个月前
JAVA设计模式:依赖倒转原则(DIP)在Spring框架中的实践体现
java·spring·依赖倒置原则
飞人博尔特的摄影师1 个月前
C#界面框架Avalonia中使用依赖注入
系统架构·前端框架·c#·.net·wpf·.netcore·依赖倒置原则
ke_wu2 个月前
常见设计原则
接口隔离原则·依赖倒置原则·里氏替换原则·开闭原则·迪米特法则·单一职责原则
huaqianzkh3 个月前
依赖倒置原则:Java实践篇
java·设计模式·依赖倒置原则
cs8219848313 个月前
QT 设置高DIP支持多分屏幕,window缩放比例问题等
开发语言·qt·依赖倒置原则
Theodore_10223 个月前
3 设计模式原则之依赖倒置原则
java·开发语言·设计模式·java-ee·依赖倒置原则
蜡笔小新..5 个月前
【设计模式】软件设计原则——依赖倒置&合成复用
设计模式·依赖倒置原则·合成复用原则
霍金的微笑5 个月前
依赖倒置原则(学习笔记)
依赖倒置原则
Hqst 网络变压器 Andy5 个月前
交换机最常用的网络变压器分为DIP和SM
网络·依赖倒置原则
蔚一5 个月前
Java设计模式—面向对象设计原则(三) -----> 依赖倒转原则DIP(完整详解,附有代码+案例)
java·开发语言·设计模式·intellij-idea·依赖倒置原则