设计六大原则纲要(二)
来源:互联网 发布:五线谱变简谱软件 编辑:程序博客网 时间:2024/09/21 08:14
4.接口隔离原则:
● Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该依
赖它不需要的接口。)
● The dependency of one class to another one should depend on the smallest possible interface.
(类间的依赖关系应该建立在最小的接口上。)我们可以把这两个定义概括为一句话:建立单一接口,不要建立臃肿庞大的接口。
注意 根据接口隔离原则拆分接口时,首先必须满足单一职责原则。接口要高内聚,低耦合。● 一个接口只服务于一个子模块或业务逻辑;
● 通过业务逻辑压缩接口中的public方法,接口时常去回顾,尽量让接口达到“满身筋骨
肉”,而不是“肥嘟嘟”的一大堆方法;
● 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化
处理;
● 了解环境,拒绝盲从。每个项目或产品都有特定的环境因素,别看到大师是这样做的
你就照抄。千万别,环境不同,接口拆分的标准就不同。深入了解业务逻辑,最好的接口设
计就出自你的手中!
5.迪米特法则:
定义:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。其要求的结果就是产生了大量的中转或跳转类,导致系统的复杂性提高,同时也为维护带来了难度。读者在采用迪米特法则时需要反复权衡,既做到让结构清晰,又做到高内聚低耦合。
6.开闭原则:
Software entities like classes,modules and functions should be open for extension but closed for
modifications.(一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。)
一个软件产品只要在生命期内,都会发生变化,既然变化是一个既定的事实,我们就应该在设计时尽量适应这些变化,以提高项目的稳定性和灵活性,真正实现“拥抱变化”。开闭原则告诉我们应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化,它是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。
注意 开闭原则对扩展开放,对修改关闭,并不意味着不做任何修改,低层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。
放弃修改历史的想法吧,一个项目的基本路径应该是这样的:项目开发、重构、测试、投产、运维,其中的重构可以对原有的设计和代码进行修改,运维尽量减少对原有代码的修改,保持历史代码的纯洁性,提高系统的稳定性。
在实践中过程中,架构师或项目经理一旦发现有发生变化的可能,或者变化曾经发生过,则需要考虑现有的架构是否可以轻松地实现这一变化。架构师设计一套系统不仅要符合现有的需求,还要适应可能发生的变化,这才是一个优良的架构。
开闭原则是一个终极目标,任何人包括大师级人物都无法百分之百做到,但朝这个方向努力,可以非常显著地改善一个系统的架构,真正做到“拥抱变化”。
- 设计六大原则纲要(二)
- 设计六大原则纲要(一)
- 设计模式(二)六大设计原则
- 【设计模式】之六大原则(二)
- 设计模式之六大原则(二)
- 设计模式(二):六大原则
- 设计模式六大原则之(二)---里氏替换原则
- 设计模式六大原则(二)-- 单一职责原则 ( SRP )
- 面向对象六大设计原则(二)开闭原则
- 设计模式笔记(二)设计六大原则之二--里氏替换原则
- 【设计模式】六大原则之二(依赖倒转原则与里氏代换原则)
- 六大设计原则(上)
- 六大设计原则(下)
- 六大设计原则(概念)
- 设计模式(二)------设计模式六大原则(1):单一职责原则
- 《设计模式之禅》六大设计原则(二)里氏替换原则
- 设计模式六大原则例子(二)-- 单一职责原则(SRP)例子
- 六大设计原则之二_里氏替换原则(LSP)
- Netty实例
- Bootstrap(一)
- <特别分享>基于迅为4418开发板Ubuntu系统烧写方法
- linux常用命令总结
- python中lambda应用
- 设计六大原则纲要(二)
- label标签的用途
- Android开源数据库框架-LitePal的使用
- 2017暑假集训 div1 线段树(2)
- 使用a标签跳转Servlet并携带参数 给出弹窗
- "-"组合框(CComBox)综合文件.
- Ubantu硬盘分区
- 如何用export修改环境变量 以及 PATH与$PATH的区别
- 排序算法