714 words
4 minutes
设计模式系列(二):三大分类

AI 智能总结

设计模式 2 三大分类#

23种经典GoF设计模式,按照职责划分为创建型、结构型、行为型三大类。不用死记模式,先分清分类定位,遇到业务场景才能快速匹配方案。

一、创建型模式:隔离对象创建逻辑#

核心目标:将对象的创建与使用分离,屏蔽实例化细节,使用者无需关心new过程。
包含:工厂模式、单例模式、建造者模式、原型模式

典型场景:

  1. 单例:全局唯一实例(配置管理器、连接池)
  2. 工厂:统一封装对象创建,按需产出实例
  3. 建造者:复杂对象分步构建(参数繁多的实体)
  4. 原型:通过克隆已有对象创建新实例

示例(简易静态工厂)

interface Product {}
class ProductA implements Product {}
class ProductB implements Product {}
class ProductFactory {
public static Product createProduct(String type) {
if ("A".equals(type)) return new ProductA();
if ("B".equals(type)) return new ProductB();
throw new IllegalArgumentException();
}
}

二、结构型模式:实现类与对象组合#

核心目标:通过组合、包装、适配等方式组装对象,灵活拓展功能,不改动原有代码。
包含:适配器、装饰器、代理、组合、外观模式

典型场景:

  1. 适配器:兼容两套不匹配接口(新旧系统对接)
  2. 装饰器:动态叠加对象功能
  3. 代理:控制对象访问(预处理、权限校验)
  4. 组合:统一处理单个对象与对象集合(树形结构)
  5. 外观:提供统一入口,简化复杂子系统调用

示例(外观模式极简演示)

// 多个复杂子系统
class SubSystemA {}
class SubSystemB {}
// 外观门面,对外只暴露简单方法
class Facade {
private SubSystemA a = new SubSystemA();
private SubSystemB b = new SubSystemB();
public void doWork() {
// 封装内部调用逻辑
}
}

三、行为型模式:管控对象通信与职责分配#

核心目标:规范对象之间交互方式、算法分发、职责流转。
包含:策略、观察者、模板方法、迭代器、责任链

典型场景:

  1. 策略:同一行为多种算法,运行时切换
  2. 观察者:事件订阅通知(消息推送、事件监听)
  3. 模板方法:固定流程框架,预留拓展点
  4. 迭代器:统一遍历集合,隐藏存储结构
  5. 责任链:请求沿着处理器依次传递,分层处理

示例(策略模式)

interface Strategy {
void execute();
}
class StrategyOne implements Strategy{}
class StrategyTwo implements Strategy{}
class Context {
private Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void run() {
strategy.execute();
}
}

小结#

  • 创建型:解决「怎么造对象」
  • 结构型:解决「怎么组装对象」
  • 行为型:解决「对象怎么交互协作」

所有模式本质都是前文设计原则的落地实践。开发优先遵循设计原则,再按需选用模式,杜绝过度设计。

设计模式系列(二):三大分类
https://fuwari.vercel.app/posts/design-series/design-02-categories/
Author
Zero02
Published at
2025-07-08
License
CC BY-NC-SA 4.0