一、六大设计原则
1、单一职责原则
【Single Responsibility Principle
】
保证类的职责要单一。
应该有且仅有一个原因引起类的变更。
好处
:
- 类的复杂性降低
- 可读性提高
- 可维护性提高
- 比那更引起的风险降低
2、里氏替换原则
【Liskov Substitution Principle
】
要求不要破坏继承体系。
定义
:所有引用基类的地方必须能透明地使用其子类的对象。
只要父类能出现的地方我子类就可以出现,而且调用子类还不产生任何的错误或异常,调用者可能根本就不需要知道是父类还是子类。但是反过来就不成了,有子类出现的地方,父类未必就能适应。
里氏替换法则包含了四层意思
:
-
子类必须完全的实现父类的方法。
在类中调用其他类是务必要使用父类或接口,如果不能使用 父类或接口,则说明类的设计已经违背了
LSP
原则。 -
子类可以有自己的个性。
-
覆盖或实现父类的方法时输入参数可以被放大。
子类中方法的前置条件必须与超类中被覆盖的方法的前置条件相同或 者更宽松。
-
覆盖或实现父类的方法是输出结果可以被缩小。
3、依赖倒置原则
【Dependence Inversion Principle
】
面向接口去编程。
4、接口隔离原则
【Interface Segregation Principle
】
设计接口的时候,要做到精简单一。
-
接口尽量要小。
-
接口要高内聚。
-
定制服务。
-
接口设计是有限度的。
衡量规则
:-
一个接口只服务于一个子模块或者业务逻辑。
-
通过业务逻辑压缩接口中的 public 方法。
-
已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理。
-
了解环境,拒绝盲从。
-
5、迪米特法则
**【Low Of Demeter
】 **
降低耦合,所有的都要解耦。
迪米 特法则就要求类“小气”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private,package-private、protected等访问权限。
- 只和朋友交流。
成员朋友类
:出现在成员变量、方法的输入输出参数中的类- 朋友间也是有距离的。
- 是自己的就是自己的;如果一个方法放在本类中,即不增加类间关系,也对本类不产生负面影响,就放置在本类中。
- 谨慎使用
Serializable
。
6、开闭原则
**【Open Close Principle
】 **
对扩展开放,对修改关闭。
注意:
多用组合,少用继承。
原因:
- 继承的时候会破坏封装
- 组合的好处:类似于装饰器模式,把装饰定义在子类或者额外的实现类里面,通过调用不同的方法、动作,来去装饰。
Java单继承多实现,为什么不可以多继承?
如果是多继承,子类调用父类的名字相同的变量和方法的时候,会出现混淆,就会不知道具体调用的哪个父类的方法了,所以必须要单继承。
编写不易,转载注明出处:https://www.cnblogs.com/lmh15054109/p/13848547.html