《GOF设计模式》是一本深入解析23种经典设计模式的书籍,由作者结合自己的学习经验和项目应用,对软件开发中常见的设计模式进行精炼讲解和实例演示。该书遵循GoF(Gang of Four,四位大牛)的设计模式体系,涵盖了创建型、结构型和行为型三大类模式。
1. **创建型模式**(Chapter 1)包括:
- **Factory模式**:提供一个创建对象的接口,但具体如何创建由子类决定,实现对象的替换性创建,如标准库中的`std::factory<T>`。
- **Abstract Factory模式**:定义一系列相关的工厂方法,以便于创建一系列相关或相互依赖的对象,而不指定它们具体的类。
- **Singleton模式**:确保一个类只有一个实例,并提供全局访问点,避免多例问题。
- **Builder模式**:将复杂对象的构建过程分解为多个步骤,使用户可以逐步构造对象,隐藏对象内部细节。
- **Prototype模式**:通过克隆现有的对象来创建新的对象,用于频繁创建性能要求高的对象。
2. **结构型模式**(Chapter 2)涵盖:
- **Bridge模式**:将抽象部分和实现部分分离,使它们可以独立变化,提高系统灵活性。
- **Adapter模式**:让类能够在不修改原有代码的情况下适应新接口,实现旧接口到新接口的转换。
- **Decorator模式**:动态地给一个对象增加功能,而不用修改它的结构。
- **Composite模式**:组合相似的对象形成树形结构,使他们可以统一处理。
- **Flyweight模式**:减少系统资源消耗,通过共享对象来高效地支持大量细粒度对象。
- **Facade模式**:为复杂的系统提供简单的接口,隐藏其实现细节。
- **Proxy模式**:为对象提供一种代理以控制对原对象的访问,用于安全、性能优化或其他目的。
3. **行为型模式**(Chapter 3):
- **Template Method模式**:规定算法的骨架,允许子类重写某些步骤。
- **Strategy模式**:定义一组算法,让它们之间可以互换,使算法的变化独立于使用算法的对象。
- **State模式**:允许对象在运行时改变其状态和行为,而不影响其他对象。
- **Observer模式**(或称发布/订阅模式):定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。
- **Memento模式**:捕获和存储对象的内部状态,允许恢复到先前的状态,主要用于撤销操作。
- **Mediator模式**:定义了一个中介者角色,让各对象之间通过它进行通信,降低它们之间的耦合。
- **Command模式**:封装请求,使请求延迟执行,便于控制命令的执行过程。
- **Visitor模式**:使对象结构可以独立于它们的表示形式变化,即解耦结构和行为。
- **Chain of Responsibility模式**:将请求的处理工作分布到多个对象中,让每个对象都有机会处理请求,直到找到合适处理的为止。
- **Iterator模式**:提供一种方法顺序访问聚合对象中各个元素,且不会暴露其内部表示。
- **Interpreter模式**:将一个编译过的高级语言表达式翻译成一系列低级命令。
通过阅读这本书,读者可以深入了解设计模式的核心理念,掌握如何在实际项目中灵活运用这些模式,提升软件设计的质量和可维护性。