主要的设计模式有哪些类型?by test

wx6847b28ec87b6
发布于 2025-6-10 12:23
浏览
0收藏

设计模式及其简单定义如下:

创建型模式(Creational Patterns)
关注对象的创建机制,提升灵活性和复用性。

单例模式(Singleton)

确保一个类只有一个实例,并提供全局访问点。

示例:数据库连接池、日志管理器。

工厂方法模式(Factory Method)

定义创建对象的接口,但由子类决定实例化哪个类。

示例:LoggerFactory 生成不同格式的日志器。

抽象工厂模式(Abstract Factory)

创建相关或依赖对象的家族,而无需指定具体类。

示例:GUI库(跨平台的按钮、文本框组合)。

建造者模式(Builder)

分步骤构建复杂对象,分离构造与表示。

示例:StringBuilder、SQL查询构造器。

原型模式(Prototype)

通过克隆现有对象来创建新对象,避免重复初始化。

示例:Java的Cloneable接口。

结构型模式(Structural Patterns)
关注类和对象的组合方式,形成更大结构。

适配器模式(Adapter)

使不兼容接口能协同工作。

示例:将旧版API适配到新系统。

装饰器模式(Decorator)

动态扩展对象功能,避免子类爆炸。

示例:Java I/O流(BufferedInputStream包装FileInputStream)。

代理模式(Proxy)

为对象提供代理以控制访问(如延迟加载、权限校验)。

示例:Spring AOP的动态代理。

外观模式(Facade)

提供简化接口,隐藏子系统复杂性。

示例:一键启动电脑(封装CPU、内存、硬盘等操作)。

桥接模式(Bridge)

分离抽象与实现,使两者独立变化。

示例:不同操作系统下的图形渲染API。

组合模式(Composite)

以树形结构处理部分-整体关系。

示例:文件系统(文件+文件夹统一接口)。

享元模式(Flyweight)

共享细粒度对象,减少内存消耗。

示例:游戏中的重复纹理、字符池。

行为型模式(Behavioral Patterns)
关注对象间的通信和职责分配。

观察者模式(Observer)

  • 定义一对多依赖,对象状态变化时自动通知依赖者。
  • 示例:事件监听、React/Vue的数据响应式。

策略模式(Strategy)

封装算法族,使其可互换。

示例:排序算法(快速排序、冒泡排序动态切换)。

命令模式(Command)

将请求封装为对象,支持撤销、队列等操作。

示例:GUI按钮操作、事务管理。

责任链模式(Chain of Responsibility)

让多个对象依次处理请求,避免请求者与接收者耦合。

示例:Web框架的中间件(如Express.js)。

状态模式(State)

允许对象在内部状态改变时改变行为。

示例:订单状态(待支付、已发货、已完成)。

模板方法模式(Template Method)

定义算法骨架,子类重写特定步骤。

示例:AbstractList 的通用列表操作。

迭代器模式(Iterator)

提供统一方式遍历集合对象。

示例:Java的Iterator接口。

中介者模式(Mediator)

通过中介对象减少对象间直接通信。

示例:聊天室(用户不直接互发消息,通过服务器中转)。

备忘录模式(Memento)

捕获并外部化对象状态,以便后续恢复。

示例:游戏存档、撤销操作。

访问者模式(Visitor)

将算法与对象结构分离,便于新增操作。

示例:编译器对AST(抽象语法树)的不同分析。

解释器模式(Interpreter)

定义语言的语法表示,并解释执行。

示例:正则表达式引擎、SQL解析。

已于2025-6-10 12:24:48修改
收藏
回复
举报
回复
    相关推荐