
本篇文章是对秦小波编写的《设计模式之禅》(第二版)的部分内容的学习总结,如有不足之处欢迎指正。
单一职责原则(Single Responsibility Principle)
概念解释:
一个类或者接口最多只有一个原因引起变化.
单一职责提出了一个编写程序的标准,用“职责”或者“变化原因”来衡量接口或者类设计的是否优良,但是“职责”和“变化原因”都是不可衡量的,因项目而异,因环境而异.
优点:
- 类的复杂性降低,实现什么职责都有清晰明确的定义;
- 可读性提高,复杂性降低;
- 可维护性提高,可读性提高;
- 变更引起的风险降低;
注:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化
里氏替换原则(Liskov Substitution Principle)
四层概念解释:
- 子类必须完全实现父类的方法;
- 子类可以有自己的个性;
- 覆盖或者实现父类的方法时输入参数可以被放大;
子类方法中的前置条件必须与超类中被覆写的方法的前置条件相同或者更宽松 - 覆写或者实现父类的方法时输出结果可以被缩小;
注:父类出现的地方子类一定可以出现,反之不一定
依赖倒置原则(Dependence Inversion Principle)
三层概念解释:
- 高层模块不应该依赖底层模块,都应该依赖其抽象;
- 抽象模块不应该依赖细节;
- 细节应该依赖抽象;
注:抽象就是指接口或者抽象类,细节就实现类
依赖倒置原则在Java语言中的精简定义就是面向接口编程.
依赖的三种写法:
- 构造函数传递依赖对象;
- Setter方法传递依赖对象;
- 接口声明依赖对象(也叫接口注入);
对倒置的解释
依赖正置:就是类间的依赖是实实在在的的实现类间的依赖,也就是面向实现编程。而编写程序需要的是对现实世界的事物进行抽象,抽象的结果就是抽象类和接口,然后我们根据系统设计的需要产生了抽象间的依赖,代替了人们传统思维中事物的依赖,“倒置”就是从这里产生.
最佳实践原则:
- 每个类尽量都有接口或者抽象类,或者抽象类和接口两者兼备;
- 变量的表面类型尽量是接口或者抽象类;
- 任何类都不应该从具体类派生;
- 尽量不要覆写基类的方法;
- 结合里氏替换原则使用;
接口隔离原则(Interface Segregation Principle)
接口类型
- 实例接口(Object Interface),在Java中声明一个类,然后new关键字产生一个实例,这个类称为实例接口.
- 类接口(Class Interface),Java中进经常使用Interface关键字定义的接口.
隔离定义
- 客户端不应该依赖它不需要的接口;
- 类间的依赖应该建立在最小接口上;
约束规范
- 接口尽量小(方法少,接口隔离原则拆分接口时,首先必须满足单一职责原则);
- 接口要高内聚;
- 定制服务(单独为个体提供定制接口);
实践规则
- 一个接口只服务于一个子模块或者业务逻辑;
- 已经被污染的接口,尽量去修改,若变更的风险大,则采用适配器模式进行转化处理;
- 了解环境,拒绝盲目依赖原则;
迪米特法则(Law of Demeter)
概念解释
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高.
开闭原则(Open Close Principle)
概念定义
一个软件实体如类、模块和函数都应该对修改关闭,对扩展开放
开闭原则的意义
只要是面向对象编程,在开发中都会用到开闭原则,开闭原则是以上五个原则的具体形态,是其精髓.

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。




近期评论