GoF 设计模式 核心内容
封面图
•
2026-04-12
•
设计模式
16
0
0
0
GoF(Gang of Four,四人组)设计模式是指由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四位作者在 1994 年出版的《Design Patterns: Elements of Reusable Object-Oriented Software》一书中提出的一套经典面向对象设计模式。这本书被认为是软件工程领域最具影响力的著作之一。 GoF 设计模式共有 **23 种**,分为三大类: --- ## 📌 一、创建型模式(Creational Patterns) **目的**:处理对象的创建过程,使系统更灵活、可复用。 ### 包括: 1. **Abstract Factory**(抽象工厂) - 提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类。 2. **Builder**(建造者) - 将一个复杂对象的构建过程分解为多个步骤,允许使用不同的构建步骤来构造不同的对象。 3. **Factory Method**(工厂方法) - 定义一个用于创建对象的接口,但让子类决定实例化哪一个类。 4. **Prototype**(原型) - 使用已有对象复制生成新对象,而不是通过 `new` 创建。 5. **Singleton**(单例) - 确保一个类只有一个实例,并提供一个全局访问点。 --- ## 📌 二、结构型模式(Structural Patterns) **目的**:处理类和对象的组合方式,以形成更大的结构。 ### 包括: 6. **Adapter**(适配器) - 将一个类的接口转换成客户期望的另一个接口。 7. **Bridge**(桥接) - 将抽象部分与其实现部分分离,使它们可以独立变化。 8. **Composite**(组合) - 将对象组合成树形结构以表示“整体-部分”层次结构。 9. **Decorator**(装饰器) - 动态地给对象添加职责,通过组合方式代替继承。 10. **Facade**(外观) - 为子系统提供一个简化的接口。 11. **Flyweight**(享元) - 运用共享技术有效地支持大量细粒度的对象。 12. **Proxy**(代理) - 为其他对象提供一个代理以控制对这个对象的访问。 --- ## 📌 三、行为型模式(Behavioral Patterns) **目的**:处理对象之间的交互和职责分配。 ### 包括: 13. **Chain of Responsibility**(责任链) - 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 14. **Command**(命令) - 将请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化。 15. **Interpreter**(解释器) - 定义语言的文法,并且解释语言中的句子。 16. **Iterator**(迭代器) - 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露其内部表示。 17. **Mediator**(调停者) - 用一个中介对象来封装一系列对象交互。 18. **Memento**(备忘录) - 在不破坏封装性的前提下,捕获并外部化一个对象的状态。 19. **Observer**(观察者) - 定义对象间的一种一对多的依赖关系,当一个对象改变状态时,所有依赖它的对象都会收到通知。 20. **State**(状态) - 允许一个对象在其内部状态改变时改变它的行为。 21. **Strategy**(策略) - 定义一系列算法,把它们一个个封装起来,并且使它们可以互相替换。 22. **Template Method**(模板方法) - 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 23. **Visitor**(访问者) - 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 --- ## ✅ GoF 设计模式的核心思想 1. **封装变化**:识别程序中可能变化的部分,并将其封装起来,便于维护和扩展。 2. **面向接口编程**:使用接口和抽象类来解耦具体实现。 3. **组合优于继承**:优先使用对象组合的方式实现功能扩展,而非继承。 4. **开闭原则(Open-Closed Principle)**:对扩展开放,对修改关闭。 5. **单一职责原则(Single Responsibility)**:一个类应该只有一个职责。 6. **依赖倒置原则(Dependency Inversion)**:依赖抽象,不要依赖具体实现。 --- ## 🧠 总结 GoF 设计模式是面向对象软件设计的基石,它们提供了一种通用的语言和解决方案,帮助开发者在面对复杂系统时,做出更优雅、更易维护、更可扩展的设计选择。掌握这 23 种模式,是成为高级软件工程师的重要一步。 如果你需要某个具体模式的详细说明或代码示例,也可以告诉我!
上一篇:
设计模式 - 责任链模式
标题录入,一次不能超过6条
留言
评论