如何提高代码的扩展性(5)

简介: 如何提高代码的扩展性(5)

依赖倒置原则(DIP)例子:


image.png


未进行依赖倒置设计:司机只开一种车


image.png


遵循依赖倒置原则设计:司机可以开多种车


https://blog.csdn.net/yabay2208/article/details/73826719


(5)接口隔离原则


ISP:其一是不应该强行要求客户端依赖于它们不用的接口;其二是类之间的依赖应该建立在最小的接口上面。简单点说,客户端需要什么功能,就提供什么接口,对于客户端不需要的接口不应该强行要求其依赖;类之间的依赖应该建立在最小的接口上面,这里最小的粒度取决于单一职责原则的划分。


如果客户端依赖了它们不需要的接口,那么这些客户端程序就面临不需要的接口变更引起的客户端变更的风险,这样就会增加客户端和接口之间的耦合程度,显然与“高内聚、低耦合”的思想相矛盾。


类之间的依赖应该建立在最小的接口上面。何为最小的接口,即能够满足项目需求的相似功能作为一个接口,这样设计主要就是为了“高内聚”。那么我们如何设计最小的接口呢?那就要说说粒度的划分了,粒度细化的程度取决于我们上一章讲的的单一职责原则里面接口划分的粒度。从这一点来说,接口隔离和单一职责两个原则有一定的相似性。


不同:

(1)单一职责原则更加偏向对业务的约束,接口隔离原则更加偏向设计架构的约束。


(2)从接口的细化程度来说,单一职责原则对接口的划分更加精细,而接口隔离原则注重的是相同功能的接口的隔离。接口隔离里面的最小接口有时可以是多个单一职责的公共接口。


(3)从原则约束的侧重点来说,接口隔离原则更关注的是接口依赖程度的隔离,更加关注接口的“高内聚”;而单一职责原则更加注重的是接口职责的划分。


image.png



相关文章
|
6月前
|
安全 Java
利用反射技术提升Java应用的灵活性和可扩展性
利用反射技术提升Java应用的灵活性和可扩展性
47 0
|
7月前
|
消息中间件 运维 监控
微服务架构的优点和缺点分别有哪些?
微服务架构的优点和缺点分别有哪些?
289 0
微服务架构的优点和缺点分别有哪些?
|
1月前
模块功能复用和扩展性
模块功能复用和扩展性 模块功能复用和扩展性是软件工程中的重要概念,主要体现在设计和实现阶段。
22 1
|
9月前
|
设计模式 算法
如何优雅地使用策略模式来实现更灵活、可扩展和易于维护的代码?
如何优雅地使用策略模式来实现更灵活、可扩展和易于维护的代码?
57 0
|
存储 缓存 运维
系统稳定性设计原则:简单、冗余、标准化、健壮
系统稳定性设计原则:简单、冗余、标准化、健壮
548 0
系统稳定性设计原则:简单、冗余、标准化、健壮
|
存储 缓存 固态存储
如何写出高性能代码(四)优化数据访问
同一份逻辑,不同人的实现的代码性能会出现数量级的差异; 同一份代码,你可能微调几个字符或者某行代码的顺序,就会有数倍的性能提升;同一份代码,也可能在不同处理器上运行也会有几倍的性能差异;十倍程序员不是只存在于传说中,可能在我们的周围也比比皆是。十倍体现在程序员的方法面面,而代码性能却是其中最直观的一面。
116 0
如何写出高性能代码(四)优化数据访问
|
程序员
如何提高代码的扩展性(3)
如何提高代码的扩展性(3)
322 0
如何提高代码的扩展性(3)
如何提高代码的扩展性(4)
如何提高代码的扩展性(4)
103 0
如何提高代码的扩展性(4)
如何提高代码的扩展性(6)
如何提高代码的扩展性(6)
189 0
如何提高代码的扩展性(6)
|
测试技术 微服务
如何提高代码的扩展性(2)
如何提高代码的扩展性(2)
133 0
如何提高代码的扩展性(2)

热门文章

最新文章