设计模式常用的七大原则:
-
单一职责原则
-
在方法上(方法很少,逻辑足够简单)或类上遵守单一职责原则都可以。
-
可以降低类的复杂性
-
-
接口隔离原则
-
客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
-
接口隔离原则和单一职责原则非常类似。单一职责原则要求接口的职责是单一的,而接口隔离原则要求接口尽量细化,它们有异曲同工之妙,都是要让我们的接口功能尽量单一,尽量小。
-
-
依赖倒转原则(DIP)
-
高层模块不应该依赖低层模块,两者都应该依赖其抽象
-
抽象不应该依赖细节,细节应该依赖抽象
-
-
里氏替换原则
- 任何基类可以出现的地方,子类一定可以出现。
- LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
- 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。
- 1.子类必须完全实现父类的方法
2.子类可以有自己的个性
3.覆盖或实现父类的方法时输入参数可以被放大,覆写或实现父类的方法时输出结果可以被缩小 - 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,即基类随便怎么改动子类都不受此影响,那么基类才能真正被复用
-
开闭原则ocp
- 软件实体应该对扩展开放,对修改关闭
- 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
-
迪米特法则
- 又叫作最少知识原则
- 个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
- 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
- 它要求一个对象应该对其他对象有最少的了解
- 迪米特法则还有一个英文解释是:talk only to your immediate friends(只和直接的朋友交流)。什么是朋友呢?每个对象都必然会与其他的对象有耦合关系,两个对象之间的耦合就会成为朋友关系。那么什么又是直接的朋友呢?我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友。迪米特法则要求只和直接的朋友通信。
- 对外除了提供的public方法,不对外泄漏任何信息。
-
合成复用原则
- 软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现