依赖倒置就是每一个实现都要抽一个接口出来吗

依赖倒置原则确保高层模块不依赖低层模块的实现,而是依赖于抽象。这样做可以隔离变化,增强系统的稳定性。通过业务需求定义抽象,服务提供方实现这些抽象,从而实现依赖倒置。依赖倒置不是简单地为每个实现创建接口,而是由消费方定义接口,服务方实现。
摘要由CSDN通过智能技术生成

A: 我觉得我们现在的抽象有点多,infra 层里面每一个类都抽取了接口,这些被调用的类多半只有一个实现,我们是不是做的太细了?

B: 从依赖倒置的角度讲,domain 层和 service 层并不应该直接调用 infra 层的实现,因此我们确实是需要每一个实现都抽一个接口出来。

A: 那依赖倒置就是每一个实现都要抽一个接口出来吗?

B: 这个…

看来小伙伴 A 不经意间触碰到了 S.O.L.I.D. 的深水区…

相比于单一职责、开闭、接口隔离等原则,依赖倒置与里氏替换类似,属于更偏向操作指导的一类原则,比如从依赖倒置的定义来看:

依赖倒置:高层模块不应直接依赖低层模块,他们都应该依赖于彼此间的抽象。

以开发的角度理解:高层不要直接调用低层,而是调用抽取出来的接口。

那这么说,依赖倒置就是每一个实现都要抽一个接口出来吗?

为了解释这个问题,我们尝试来提出一个新的问题:为啥要依赖倒置?

为啥要依赖倒置

先说结论:因为依赖倒置能隔离变化,使核心业务更稳定。

代码是由业务需求驱动出来的,而业务驱动路径一定是从高层(较为稳定的核心业务层)逐渐传递至低层(较为多变的外围支撑层)。高层不会去了解低层的实现细节,而只会对低层给出需求的定义。依赖倒置就是要明确需求的定义。

我们引入一个例子,

业务需求如下:

对于某文档管理系统,业务上需要对用户创建的文档进行存取。现有若干 Document 文档对象,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值