设计模式是为了让程序具有更好的
1、代码重用,不多次编写
2、可读性:编码规范,便于阅读与理解
3、可扩展性:易于增加新的功能
4、可靠性:增加新功能,对原来的功能没有影响
5、高内聚,低耦合
一、单一职责原则
应该有且只有一个原因引起类的变更。
即一个类或者接口的职责应该单一(业务逻辑层面)
最佳实践
1、接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化
二、里氏替换原则
有2种定义
1、如果对每个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换为o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型
2、所有引用基类的地方必须能够透明地使用其子类的对象
通俗地将,就是只要父类能出现的地方,子类都可以出现,而且替换为子类对象也不会产生任何错误或异常
最佳实践
1、项目中采用里氏替换原则,尽量避免子类的“个性”,即子类独特的属性和方法
三、依赖倒置原则
包含三层含义:
1、高层模块不应该依赖低层模块,两者都应该依赖其抽象
2、抽象不应该依赖细节
3、细节应该依赖抽象
在Java中,抽象指的是接口或者抽象类,两者都是不能被实例化的,细节就是实现类,实现接口或者继承抽象类产生的类就是细节,可以被实例化。
所以上面三层含义可以理解为
1、模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或者抽象类产生;
2、接口或者抽象类不应该依赖实现类
3、实现类依赖接口或者实现类
简单讲就是–面向接口编程
依赖的三种写法
1、构造函数传递依赖对象
2、Setter方法传递依赖对象
3、接口声明依赖对象,在接口的方法中生命依赖对象
最佳实践
1、每个类尽量都有接口或抽象类,或者两者都有
2、变量的表面类型尽量是接口或抽象类
3、任何类都不应该从具体类派生
4、尽量不要覆写基类的方法
四、接口隔离原则
- 客户端不应该依赖它不需要的接口,即类间的依赖关系应该建立在最小的接口上。
- 上面的定义要求建立单一接口,接口尽量细化,接口中方法尽可能少。
- 这与单一职责的区别在于,单一职责原则注重的是职责,是业务逻辑上的划分,而接口隔离原则要求接口中的方法尽可能少。
比如一个接口的职责包含10个方法,按照单一职责原则,这10个方法放在一个接口中,并且提供给多个模块使用,各个模块按照规定的权限去访问使用。这是符合单一职责原则的,但是却不符合接口隔离原则,应为它要求尽量使用多个专门的接口。专门的接口就是指提供给每个模块的都应该是单一接口,提供给几个模块就应该有几个接口。 - 根据接口隔离原则拆分接口时,首先要满足单一职责原则。
最佳实践
1、一个接口只服务与一个子模块或业务逻辑
2、通过业务逻辑压缩接口中的public方法
3、已经污染的接口,尽量去修改,如果修改的风险大,则使用适配器模式进行转化处理
4、了解具体环境,拒绝盲从
五、迪米特法则
也成为最少知识原则,即一个对象应该对其他对象有最少的了解。
最佳实践
1、类间解耦,弱耦合
六、开闭原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭
来源:CSDN
作者:大栗子122
链接:https://blog.csdn.net/weixin_45095479/article/details/104130412