关于功能划分的准则
高内聚,低耦合,从变更的角度来看,一个类完成的职责越简单,在变更它的时候就越方便,具体就体现在修改代码的难度/代码变更可能导致BUG的多少/可读性等...
但是这一准则的实现更多得是看程序员得经验和思路,对于未来变化得发生进行一个合理的预判
这里罗列一下单一准则的好处
这个原则是关于继承的
继承的优点
代码共享,每个子类都拥有父类的方法和属性
提高代码的扩展性,子类可以异于父类
继承的缺点
侵入性,子类必须有父类的所有属性与方法
增强了耦合性,从修改的角度来看,如果要修改父类,必须要考虑子类的修改
里氏替换用原则就是为了克服继承的缺点,如何实现它?
高层依赖低层模块×
高底层模块依赖其抽象√
抽象依赖细节×
细节依赖抽象√
依赖层级:模块->抽象->细节
要面向接口编程,不要面向实现编程
也就是说把变量类型声明,参数类型声明,方法返回类型声明,数据类型的转换放到抽象类与接口中
这样的话,如果发生修改,只需要扩展抽象层,然后添加具体的实现类,实现了开闭原则
那么如何实现它?针对抽象层编程,具体的类需要通过依赖注入的方式,常用的有三种方式
它的作用(好处)
具体的实现手段
这里的接口是指产品设计或者编程思维中的接口,它描述的是按照合理的颗粒度将接口定义出来的原则.
单一职责与接口隔离的对比:前者重在类的层面职责的规划,而后者针对更上一层的接口之间互不依赖
它的优点:
具体实现:
接口定义虽然要足够小,但是得有限度
提高内聚,减少接口对外的依赖,让接口用少的方法完成多的事情
迪米特法则
又称最少知识原则,如果两个软件实体无须直接通信,那么就不应该发生直接的项目调用,也就是说,用一个合理的第三方(如果第三方太多会降低效率)帮助实体相互通信可以有效降低实体之间的耦合程度
它的优点:
具体实现方法:
两个角度:依赖者-只依赖改依赖的对象;被依赖者-只暴露该暴露的方法
软件可以通过拓展的方式实现后续的修改,而不是编辑原有代码
毕竟软件生命周期中花费最多的就是后期修改与维护
它的地位:其他五个原则都是它的具体指导思想与工具
为了实现它,需要对整个系统进行抽象化设计
它的优点无非是:提高复用性,提高维护性
原文:https://www.cnblogs.com/gobanana/p/15000157.html