开闭原则
软件实体对扩展开放,对修改关闭
含义:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,时期满足新的需求
作用
1,遵守开闭原则,软件测试只需对扩展代码进行测试,
2,粒度越小,复用概率越高,面向对象编程,根据原子服务和抽象编程可以提高代码的可复用性
3,可以提高软件的可维护性
实现方法
抽象约束,封装变化
即通过接口或者抽象类为软件实体第一一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中
里氏替换原则
继承必须确保超类所拥有的的性质在子类中仍然成立
作用
1,实现开闭原则的重要方式
2,克服继承中重写父类造成的可复用性变差的缺点
3,他是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低代码出错的可能性
依赖倒置原则
定义
高层模块不应该依赖底层模块,两者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象
作用
降低类的耦合性
提高系统稳定性
减少并行开发引起的风险
提高代码的可读性和可维护性
实现
每个类尽量提供接口或抽象类,或者两者都具备
变量的声明类型尽量是接口或抽象类
任何类都不应该从具体类派生
使用继承时遵守里氏替换原则
单一职责原则
一个类规定应该只有一种职责,避免功能耦合
接口隔离原则
与单一职责原则类似
迪米特法则
如果两个软件实体无须直接通信,那么就不应该发生直接的相互调用
- 从依赖者的角度来说,只依赖应该依赖的对象。
- 从被依赖者的角度说,只暴露应该暴露的方法。
合成复用原则
软件复用时,先考虑组合原功能来实现,其次再考虑使用继承关系来实现
--先看能不能复用以前的代码,然后再考虑写新实现