设计模式之设计原则

百般思念 提交于 2020-02-02 09:57:55

设计模式是为了让程序具有更好的
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、类间解耦,弱耦合

六、开闭原则

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!