SOLID 设计原则

温故而知新

一, 单一职责原则(Single Responsibility Principle, SRP)
优点: 1) 类的复杂性降低了, 由于我们让每个类的职责单一,因此每个类职责清楚,定义明确。
2) 可读性增强了,复杂性降低了, 类更易于维护了。
3) 变更的风险降低了, 需求一直处于变化,使用SRP原则只需要修改一个接口及它的实现类,对其他类和接口没有影响。

二, 开闭原则 (Open-Close Principle,OCP) 灵活性,修改是通过增加代码进行的,而不是修改已有的代码。
优点:1) 保持软件产品的稳定性
2) 不影响原有测试代码的运行
3) 使代码更具模块化,易于维护
4) 提高开发效率。。

三, 里氏替换原则(The Liskov Substitution Principle, LSP) 关注怎样良好地使用继承。
Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.
(继承必须确保父类所拥有的性质在子类中仍然成立。)
正方形是特殊的长方形违背了LSP原则。。
只有行为一致的对象才能抽象出一个类。
长方形的行为: 在设置长方形的长度的时候,它的宽度保持不变, 设置宽度的时候,长度保持不变。
正方形的行为: 设置正方形的长度的时候,宽度随之改变, 设置宽度的时候,长度随之改变。

四, 接口隔离的原则 (Interface Segregation Principle, ISP), 即不应该强迫客户程序依赖它们不需要使用的方法。
在项目开发中,依赖几个专用接口要比依赖一个综合接口更加灵活。
虽然ISP原则很有意义, 但在实际项目中, 应该注意度的把握, 接口设计得过大或过小都不好, 应该根据实际情况多思考再进行设计。

五,依赖倒置原则(Dependency Inversion priciple, DIP)即 高层模块不应该依赖于底层模块, 二者都应该依赖于抽象, 而抽象不应该依赖于细节,细节应该依赖于抽象。
面向对象的标志。
在使用DIP原则时需要注意以下几点:
1) 继承自高层接口的类要实现接口中的所有方法。
2) 尽量不要覆盖继承的抽象类的方法,由于我们依赖的是抽象, 有可能逻辑中已经对这些方法产生了依赖,因此如果覆盖这些方法则有可能出现问题。
3) DIP原则是实现OCP原则的重要保障, 一般违背了DIP原则很难不违背OCP原则。
4) LSP原则是实现DIP原则的基础, 多态为实现DIP原则提供了可能。

你可能感兴趣的:(设计模式)