欢迎光临
我们一直在努力

二十三种设计模式

创建型模式(5 种)

核心思想:分离对象创建与使用,屏蔽实例化细节,降低耦合

1.单例模式 (Singleton)

保证类全局仅有一个实例,提供统一访问入口;适合全局唯一资源(配置管理器、连接池)。

2. 工厂方法模式 (Factory Method)

定义创建对象的统一接口,由子类决定实例化哪一个产品;单一产品等级结构解耦。

3.抽象工厂模式(Abstract Factory Pattern)

定义一套工厂接口,可以创建一组相互配套、关联的多种产品,工厂子类一次性产出整套系列产品。

4.建造者模式 (Builder)

分步构建复杂对象,分离构建步骤与成品表示;适合属性多、构造流程复杂的对象(订单、复杂 DTO)。

5. 原型模式 (Prototype)

基于已有对象拷贝生成新实例,无需重新 new;适合创建成本高、重复对象场景。

结构型模式(7 种)

核心思想:组合 / 改造类与对象,搭建灵活的整体结构,优先组合而非继承

1.适配器模式(Adapter Pattern)

转换不兼容接口,让两类无法协作的对象正常交互;分类适配器(继承)、对象适配器(组合)。

2.桥接模式(Bridge Pattern)

拆分「抽象层」与「实现层」,两层独立扩展;解决多维度类爆炸问题(如图形 + 颜色)。

3.组合模式(Composite Pattern)

树形 “整体 – 部分” 结构,客户端统一操作单个对象与容器对象;菜单、文件目录经典场景。

4.装饰器模式(Decorator Pattern)

动态给对象叠加额外功能,替代静态子类扩展;IO 流、权限叠加场景常用

5.外观模式(Facade Pattern)

给复杂子系统提供统一高层入口,简化调用;屏蔽底层多组件复杂逻辑。

6.享元模式(Flyweight Pattern)

共享复用大量细粒度对象,减少内存开销;文字字符、缓存池场景。

7.代理模式(Proxy Pattern)

提供中介代理对象,控制对真实目标的访问;远程代理、静态 / 动态代理、AOP 底层基础。

行为型模式(11 种)

核心思想:分配对象职责、管理运行时交互流程,处理算法与协作逻辑

1.模板方法模式(Template Method Pattern)

父类固定算法骨架,可变步骤交由子类实现;复用通用流程,仅扩展差异化逻辑。

2.策略模式(Strategy Pattern)

封装一系列可互换算法,运行时动态切换;消除大量 if-else 分支判断。

3.命令模式(Command Pattern)

将请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化。

4.责任链模式(Chain of Responsibility Pattern)

请求沿处理链依次传递,每个节点自主决定处理 / 转发;日志分级、权限校验、拦截器。

5.状态模式(State Pattern)

对象行为随内部状态自动切换,消除大量状态分支;订单状态、游戏角色状态。

6.观察者模式(Observer Pattern)

定义对象间的一种一对多的依赖关系,以便当一个对象状态改变时,所有依赖于它的对象都得到通知并自动刷新, 消息推送、事件监听、MQ 消费。 。

7.中介者模式(Mediator Pattern)

引入统一中介隔离多对象直接交互,解除多方耦合;聊天室、组件联动。

8.迭代器模式(Iterator Pattern)

统一遍历聚合容器元素,不暴露容器内部存储结构;集合遍历工具。

9.访问者模式(Visitor Pattern)

将数据结构与操作分离,新增操作不修改原有数据类;复杂数据结构多维度统计。

10.备忘录模式(Memento Pattern)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。支持回滚;编辑器撤销、游戏存档。

11.解释器模式(Interpreter Pattern)

定义文法规则与解释器,解析自定义语言 / 表达式;正则、表达式计算器(使用最少)。

赞(0)
未经允许不得转载:171主机测评 » 二十三种设计模式
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址