面向对象设计原则四:依赖倒置原则
依赖倒置原则(DIP)
定义:高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
好处:稳定性、可维护性、可扩展性。
概述:DI就是依赖倒置的意思,也可称为控制反转,我们以前编写结构化的程序当中,也就是C语言这样的语言时,高层模块依赖于底层模块,也就是调用者和被调用者的关系,调用者要依赖于被调用者,被调用者编写的一些功能和服务,会影响高层,一旦底层发生了变化,也就是被调用者发生了变化,就直接影响了高层也就是调用者。这样的设计,很难保证他的稳定性,经常会发生变化,代码维护起来也非常的困难。
但是在面向对象的设计中,这种设计应该反过来,底层和高层不应该有这样的依赖关系,高层不应该依赖于底层,底层也不应该依赖于高层。底层和高层都应该依赖于抽象类或接口,底层变化,不影响高层。依赖倒置原则:本质上是在要求我们“面向接口编程”,它要求每个类尽量都来自接口或抽象类,变量定义尽量使用抽象类或接口,不要使用具体类,这样便于扩展,尽量不要覆盖父类已经实现好的方法。接口负责公共方法的声明,抽象类负责公共方法实现的定义。
开闭原则和依赖倒置原则是目标和手段的关系。开闭是目标,可以通过依赖倒置来实现对功能扩展开放,对修改关闭。
因为依赖倒置原则和开闭原则是手段和目标的关系,也就是依赖倒置原则的好处和开闭原则的好处基本上是一致的,它的好处就是可以减少类之间的耦合度,进一步提高系统的稳定性、可维护性和可扩展性,只不过依赖倒置原则建议尽量使用抽象类和接口,而开闭原则突出的是使用了抽象类和接口之后的效果!
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决