设计模式的七大原则
1.开闭原则
定义:对修改开放,对拓展开放
实现方法:”抽象约束,具体封装“,意思就是我们通过接口或者抽象类为软件实体设计一个稳定的抽象层,将可变因素封装在具体实现类中。
2.里氏代换原则
定义:继承必须确保超类所拥有的性质在子类中仍然成立
实现方法:子类可以扩展父类的功能,但是不能改变父类原有的功能。
3.依赖倒置原则
定义:高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应依赖细节,细节应该依赖抽象。
实现方法:依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性(主要是尽量每个类都提供接口或者抽象类)
4.单一职责原则
定义:一个类应该有且仅有一个引起他变化的原因,否则类应该被拆分
实现方法:发现类的多重职责并进行拆分
5.接口隔离原则
定义:客户端不应该被迫依赖于它不使用的方法
在具体应用接口隔离原则时,应该根据以下几个规则来衡量。
- 接口尽量小,但是要有限度。一个接口只服务于一个子模块或业务逻辑。
- 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。
- 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同深入了解业务逻辑。
- 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
6.迪米特法则
定义:最少知识原则
实现:
从迪米特法则的定义和特点可知,它强调以下两点:
- 从依赖者的角度来说,只依赖应该依赖的对象。
- 从被依赖者的角度说,只暴露应该暴露的方法。
所以,在运用迪米特法则时要注意以下 6 点。
- 在类的划分上,应该创建弱耦合的类。类与类之间的耦合越弱,就越有利于实现可复用的目标。
- 在类的结构设计上,尽量降低类成员的访问权限。
- 在类的设计上,优先考虑将一个类设置成不变类。
- 在对其他类的引用上,将引用其他对象的次数降到最低。
- 不暴露类的属性成员,而应该提供相应的访问器(set 和 get 方法)。
- 谨慎使用序列化(Serializable)功能。
7.合成复用原则
定义:它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
实现:合成复用原则是通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。