《23种设计模式》是一本深入解析和实践GoF(Gang of Four,四位软件设计大师)提出的经典设计模式的书籍。作者结合C++实现源码,系统地介绍了23种设计模式,这些模式被划分为三大类:创建型模式、结构型模式和行为模式。
1. 创建型模式:
- Factory模式:提供一个创建对象的接口,但让子类决定实例化哪个类,实现了“抽象工厂”。
- AbstractFactory模式:定义一个用于创建一系列相关或相互依赖对象的接口,而不是具体的类,确保了灵活性。
- Singleton模式:确保某类只有一个实例,并提供全局访问点,避免资源浪费。
- Builder模式:将构建过程与它的表示分离,使同样的构建过程可以创建不同的表示。
- Prototype模式:通过克隆现有的对象来创建新对象,常用于大量相似对象的快速生成。
2. 结构型模式:
- Bridge模式:将抽象部分和实现部分解耦,允许它们独立变化。
- Adapter模式:将一个类的接口转换为客户期望的另一个接口,使得原本不兼容的类可以一起工作。
- Decorator模式:动态地给对象增加功能,其扩展性优于继承。
- Composite模式:组合多个对象表示单个实体,同时保持一致的接口。
- Flyweight模式:高效地支持大量细粒度对象,通过共享减少内存消耗。
- Facade模式:为复杂系统提供简单的接口,隐藏其实现细节。
- Proxy模式:为其他对象提供代理以控制访问,如安全检查或性能优化。
3. 行为模式:
- Template模式:定义算法的框架,而将具体实现留给子类。
- Strategy模式:定义一组算法,让它们之间可以互换,而算法的变化不会影响到使用算法的对象。
- State模式:允许对象在运行时改变它的行为,根据它所处的状态。
- Observer模式:定义了对象间的一对多依赖关系,当一个对象状态改变时,所有依赖于它的对象都会得到通知。
- Memento模式:保存和恢复一个对象的内部状态,使对象能够“撤销”或“重做”操作。
- Mediator模式:定义一个中介者,为各个对象提供通信的中介,降低他们之间的耦合。
- Command模式:封装请求并将其参数传递给请求的接收者,从而可以支持命令的执行、撤销和记录。
- Visitor模式:使一个类族中的对象能够接受多种不同操作,无需修改类的结构。
- Chain of Responsibility模式:将请求沿着一系列可能处理该请求的对象链传递,直到找到能处理的对象。
- Iterator模式:提供一种方法顺序访问聚合对象元素序列,而无需暴露其内部表示。
- Interpreter模式:解释一个表达式(编程语言),将它翻译成对机器的特定操作。
这本书不仅讲解了模式的概念,还提供了实际的C++代码示例,帮助读者在开发过程中理解和应用设计模式,提升软件架构的质量和灵活性。作者分享了自己的学习经验和项目实践经验,鼓励读者在实际开发中体验和思考设计模式的价值。