后端设计模式介绍
GoF 将设计模式分为三大类,共 23 种设计模式:
一、创建型模式(Creational Patterns)
创建型模式关注对象的创建过程,旨在通过封装对象的实例化过程来使系统独立于对象的具体实现。
1. 单例模式(Singleton Pattern)
保证一个类仅有一个实例,并提供一个全局访问点。
适用场景:工具类、配置类、线程池等。
2. 工厂方法模式(Factory Method Pattern)
定义一个用于创建对象的接口,但允许子类决定实例化哪一个类。
适用场景:需要创建一组具有共同父类的对象。
3. 抽象工厂模式(Abstract Factory Pattern)
提供一个创建一系列相关或互相依赖对象的接口。
适用场景:需要创建多个相关类的对象,但不希望指定具体类。
4. 建造者模式(Builder Pattern)
将一个复杂对象的构建与其表示分离,以便相同的构建过程可创建不同的表示。
适用场景:像构建多步骤的复杂对象(如配置对象、SQL 查询等)。
5. 原型模式(Prototype Pattern)
使用原型实例指定创建对象的种类,并通过拷贝这些原型来创建新的对象。
适用场景:需要大量重复类似的对象时(如克隆、深拷贝)。
二、结构型模式(Structural Patterns)
结构型模式关注类或对象的组合,以便更好地实现功能。
6. 适配器模式(Adapter Pattern)
将一个类的接口转换成客户期望的另一个接口,使接口不兼容的类能够一起工作。
适用场景:旧的类需要适配新接口。
7. 桥接模式(Bridge Pattern)
将抽象部分与其具体实现分离,使它们可以独立地变化。
适用场景:跨多个维度维度变化(如不同设备的 UI 与驱动)。
8. 装饰器模式(Decorator Pattern)
动态地为对象添加额外的职责。
适用场景:扩展类的功能且不使用继承。
9. 组合模式(Composite Pattern)
将对象组合成树状结构以表示“整体-部分”的层次结构。
适用场景:需要表示对象的层次结构(如文件系统)。
10. 外观模式(Facade Pattern)
为子系统中的一组接口提供一个统一的接口。
适用场景:简化复杂系统调用提供的接口。
11. 享元模式(Flyweight Pattern)
运用共享技术有效地支持大量细粒度对象。
适用场景:大量相似对象(如对象池、缓存)。
12. 代理模式(Proxy Pattern)
为其他对象提供一个代理以控制对该对象的访问。
适用场景:远程代理、安全代理、缓存代理等。
三、行为型模式(Behavioral Patterns)
行为型模式关注对象如何交互以及职责划分,通过类之间的通信分担责任。
13. 职责链模式(Chain of Responsibility Pattern)
将能够处理请求的多个对象连成一条链,沿着链传递请求,直到被某个对象处理。
适用场景:多个处理器对请求的依赖关系(如审批流)。
14. 命令模式(Command Pattern)
将请求封装为对象,使可以通过参数化不同的请求来对请求排队或记录日志。
适用场景:任务队列、请求撤销等。
15. 解释器模式(Interpreter Pattern)
给定一种语言,定义一种表示该语言的文法和解释器。
适用场景:实现简单语法规则的场景(如正则表达式解析)。
16. 迭代器模式(Iterator Pattern)
提供一种顺序访问集合对象的元素的方法,而不暴露其内部结构。
适用场景:遍历集合时使用。
17. 中介者模式(Mediator Pattern)
用一个中介对象封装一组对象的交互。
适用场景:多个对象之间相互交互过于复杂时(如聊天室系统)。
18. 备忘录模式(Memento Pattern)
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存状态。
适用场景:需要保存/回退对象状态时(如撤销功能)。
19. 观察者模式(Observer Pattern)
定义对象间一种一对多的依赖,一个对象改变状态时会通知所有依赖者。
适用场景:事件驱动编程(如订阅-通知模型)。
20. 状态模式(State Pattern)
允许对象在内部状态变化时改变其行为。
适用场景:有限状态机设计(如订单状态流转)。
21. 策略模式(Strategy Pattern)
定义一系列算法,并使它们可以互换。
适用场景:可动态选择算法。
22. 模板方法模式(Template Method Pattern)
定义算法框架,将某些步骤延迟到子类实现。
适用场景:抽象出公共操作,再将具体实现交由子类。
23. 访问者模式(Visitor Pattern)
表示一个作用于某对象的数据操作,使你可以在不改变类的前提下定义作用于这些对象的操作。
适用场景:需要对多个类的结构进行操作(如对象树的遍历操作)。
四、总结 - 设计模式分类
以上是经典的 23 种 GoF 设计模式,它们广泛应用于软件开发中,帮助开发者在解决复杂问题时能够找到更灵活、可扩展和易维护的解决方案。 此外,随着技术的发展,还有新的设计模式(如微服务模式、CQRS 等)在特定技术领域被广泛应用。设计模式的核心思想始终是为复杂问题提供优雅的解决方案,辅助程序员简化代码复杂度和增强系统可扩展性!
评论