依赖注入
依赖注入
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。
如果一个类A的功能实现需要借助于类B,那么就成类B是类A的依赖。
如果在类A的内部去实例化类B,那么两者之间会出现比较高的耦合。一旦类B出现了问题,类A也需要进行改造。
如果这样的情况较多,每个类之间都有依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。
要解决这个问题,就要把A类对B类的控制权抽离出来,交给第三方去做。把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control).
控制反转是一种思想,是能够解决问题的一种可能的结果,而依赖注入(Dependency Injection) 就是其最典型的实现方法。
由第三方(我们称作IOC容器)来控制依赖,把他通过构造函数、属性或者工作模式等方法,注入到类A内。这样就极大程度的对类A和类B进行了解耦。
http://c.biancheng.net/design_pattern/
设计模式六大原则: 开闭原则
软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的。
迪米特法则(LOD):
也叫最少知识原则。迪米特法则的定义是只与你的直接朋友交谈,不与"陌生人"说话。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该应用。其目的是降低类之间的耦合度,提高模块的相对独立性。
里氏替换原则:
子类应当可以替换父类并出现在父类能够出现的地方。
单一职责原则:
对象不应承担太多功能,正如一心不能而用,比如太多的工作(种类)会使人崩溃。唯有专注才能保证对象的高内聚;唯有唯一,才能保证对象的细粒度。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!