架构整洁之道——依赖倒置和组件构建原则
什么是依赖倒置原则?
设计一个灵活的系统,在源代码层级的依赖关系中就应该多引用抽象类型而不是引用具体的实现。
一个稳定的抽象接口以适用于该情况下的绝大部分引用,比如支付接口,前期需要接入四大行后期还要接入支付宝微信,那么根据需求我们可以先实现四大行的实现,我们要抽象出来一个接口 通过类型实现获取当前需要实现的类型,我们在调用的时候根据不同的类型获取不同的实现。就算是某个银行的支付接口停用了那么我们只需要关闭当前类型的规则,就可以停掉当前关闭的接口。
抽象接口包含了应用所有的业务方向,而实现方法中包含了各类的业务实现。
组件聚合:
rep 复用、发布等同原则
rep原则更多的是描叙的是让我们在开发的时候尽可能的做到代码的复用性。
在.net 中就是我们打包的nuget包 当我们系统引用我们自己的程序包的时候,每当我们更新了 nuget包我们也就需要同步更新我们引用的nuget包,
为什么要更新?
1、修改bug
2、代码优化
首先修改bug 的这种情况下我们就十分需要更新当前引用的neget包,来确保当前引用没有问题。其次代码优化提高了我们的运行效率所以需要更新。
ccp共同闭包原则
个人认为ccp原则是告诉我们例如:新增和修改接口应该放在同一个文件下。更新的时候只需要更新当前模块不需要更新其他模块。
ocp 原则
需要一个类增加一个方法满足业务需求时,考虑应该增加方法的职责和当前类的职责核心是否一致。一致则该,不一致则考虑继承。
将由于相同原因而修改,并且需要同时修改的东西放在一起,将由于不同原因而修改,并且不同时修改的的东西分开。
我对于这句话的理解时这样子。
修改只影响本部分,不影响其他部分,同步其他部分修改也不影响本部分。
crp共同复用原则
就是将当前类中属于其他类的功能给区分开,将不属于当前类的内容给拆出去。
个人理解在我们开发过程中将不要引用用不到的东西。尽可能的在当前类中引用于当前内容无关的类,类似于在开发动态利润表时查看快照时发现 计算函数引用了oracle.xxx一样。
优秀的架构是不断演化而来的。
组件耦合
不管是上面的SOLID设计原则还是rep、ccp、ocp、crp 都在向我们介绍的是基础的原则属性,这些原则没有更抽象的告诉我们可能会使用在什么地方,现在组件聚合就是这些原则我们可以使用到的地方。
不管是SOLID原则也好还是组件聚合也好最后在应用程序中都是通过代码耦合在一起的。
组件结构图是不可能自上而下被设计出来的,也不可能是在系统构建的时候设计出来的,所有我们在设计系统的时候要留有余地,考虑可扩展行。
在我们的需求进行变更时我们能使用到最小的调整就能对系统进行变更。对实现变更时我们需要扩展,对扩展开发对修改关闭。
依赖关系应该指向更稳定的方向。需要经常变更的类应该尽可能的减少依赖关系。
被别的人依赖就应该对别人负责,每次变更就应该更多的考虑依赖的类,尽可能的对外承诺变更不会因此受到破坏。
稳定抽象原则,一个组件的抽象化程度应该保证其稳定性是一致的。当前我们的类要增加另一块的逻辑变更,那么我们就要对当前类进行变更。对扩展开放,对修改关闭。所以使用抽象类更符合这一原则。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)