设计模式原则
单一职责
单一职责原则的准确定义为:就一个类而言,应该仅用一个引起它变化的原因
其本质上是为了满足 低耦合 的需求。若一个类承担的职责过多,就会导致其本身应有的职责被削弱,当变化发生时,已有的类可能会发生意想不到的破坏,导致类的设计变得脆弱。因此, 能引起类状态改变的动机应当不多于一种。
开闭原则
开闭原则 OCP (The Open-Closeed Principle)
的准确定义为:对于拓展是开放的,对于更改是封闭的
开闭原则意味着当你得到新需求时,应当尽可能拓展已有代码,而不是修改已有代码。其主要可以通过一下几种方式:
设计人员在设计时就猜测出最有可能发生变化的类,并对其进行抽象
在设计之初假设不会发生变化,一旦发生变化就通过重构将类似变化进行抽象,防止以后发生的同类变化
开闭原则需要注意:
查明变化的时间越久,建立正确的抽象就越难
泛滥的抽象必定会导致系统的臃肿,因此,拒绝不成熟的抽象和抽象本身一样重要
里氏替换原则
里氏替换原则的准确定义为:子类型必须能够替换掉它们的父类型
。
实质上指的是 is-a 关系,在 C 中意味着公有继承。简单来说就是:任何适用于父类的方法都可以用于其子类。footnote:[Effective C 第三版:条款35]
依赖倒置原则
依赖倒置原则的准确定义为:抽象不应该依赖于细节,细节应该依赖于抽象
。
简单来讲,就是应当针对接口编程,而不是针对实现编程。
接口隔离原则
其准确定义为:类之间依赖关系应该建立在最小的接口上
。
简单来说,应当将复杂的系统拆分未多个简单接口。
迪米特法则
迪米特法则也叫最小知识原则,其准确定义为:如果两个类不必彼此直接通信,那么这两个类不应当发生直接的相互作用,如果一个类调用另一个类的某个方法时,可以通过第三者转发此调用
。 其根本指导思想为降低类之间的耦合关系,方法为在类的设计中,尽量降低成员的访问权限。其途径有:
尽量减少可以对类数据成员的访问的函数
耦合度越低,其可复用性越强。
大化设计模式