C++11 实现设计模式
1. 单一职责原则
一个类只做一件事、只负责一项职责,职责的拆分和分离是一种解耦方式。
2. 开闭原则
代码对拓展开放,但对修改封闭,也就是说,可以对一个类进行拓展,但不能修改原有的逻辑和代码。
3. 里氏替换原则
子类可以扩展父类的功能,但不能改变原有父类的功能,也就是说,对调用者来说,子类可以完全替换父类而不影响功能。
4. 依赖倒转原则
上层模块不应该依赖底层模块,两者应依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象,即类之间交互尽量使用抽象(接口)。
5. 迪米特法则
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用(聚合)。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。一个对象应该对其他对象有最少的了解,据此进行解耦。
6. 合成/聚合复用原则
优先使用对象的合成或聚合,而不是类的继承,继承是一种强耦合关系,而聚合是一种弱耦合。
7. 接口隔离原则
实现高内聚低耦合,对外的接口尽可能精简,不暴露对客户端无用的接口。
创建型模式抽象封装了实例化的过程,用户无需知道所使用对象具体是如何实例化的以及具体的对象细节,只需要知晓抽象类所定义的接口即可。而因为所使用的是接口,也就带来了松耦合,依赖接口而不是依赖过程,使整个系统的设计更加符合单一职责原则。
创建型模式在创建什么,由谁创建,何时创建等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。
结构型模式通常用于对现有的类进行复用或拓展,主要表现为类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。
在系统中尽量使用聚合关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。继承是强耦合,聚合是弱耦合。
行为型模式是对在不同的对象之间划分责任和算法的抽象化。
通过行为型模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能,一个对象在运行时也将影响到其他对象的运行。
- 《图解设计模式》
- 《大话设计模式》
- 图说设计模式