设计模式与构件复用
综合知识考定义,案例分析考用法。必背:23 个模式分类、构件 5 步开发流程
一、23 个设计模式分类(GoF) ⭐⭐⭐
必背口诀
创建型 5 个:工厂 · 抽象工厂 · 单例 · 建造者 · 原型
结构型 7 个:适配器 · 桥接 · 组合 · 装饰 · 外观 · 享元 · 代理
行为型 11 个:责任链 · 命令 · 解释器 · 迭代器 · 中介者 · 备忘录 · 观察者 · 状态 · 策略 · 模板 · 访问者
总记:"5 + 7 + 11 = 23"
1. 创建型(关注 对象创建)
| 模式 | 意图 | 关键词 |
|---|---|---|
| 工厂方法 Factory Method | 定义创建接口,子类决定实例化 | 多态创建 |
| 抽象工厂 Abstract Factory | 创建一族相关对象 | 产品族 |
| 单例 Singleton | 唯一实例 | 全局唯一 |
| 建造者 Builder | 分步构建复杂对象 | 分离构造与表示 |
| 原型 Prototype | 通过克隆创建 | clone() |
2. 结构型(关注 类/对象组合)
| 模式 | 意图 | 关键词 |
|---|---|---|
| 适配器 Adapter | 转换接口 | 插头转换 |
| 桥接 Bridge | 分离抽象与实现 | 两个维度独立扩展 |
| 组合 Composite | 树形结构 | 统一对待叶子和组合 |
| 装饰 Decorator | 动态加职责 | 替代继承的扩展 |
| 外观 Facade | 子系统统一入口 | 简化复杂调用 |
| 享元 Flyweight | 共享细粒度对象 | 对象池 |
| 代理 Proxy | 访问控制 | 远程/虚拟/保护 |
3. 行为型(关注 对象交互)
| 模式 | 意图 | 关键词 |
|---|---|---|
| 责任链 CoR | 请求沿链传递 | 多个处理器 |
| 命令 Command | 封装请求为对象 | 可撤销 |
| 解释器 Interpreter | 解释语言 | 规则引擎 |
| 迭代器 Iterator | 顺序访问聚合 | 遍历 |
| 中介者 Mediator | 对象间通信中介 | 降低耦合 |
| 备忘录 Memento | 保存对象状态 | 恢复 |
| 观察者 Observer | 一对多通知 | 发布订阅 |
| 状态 State | 状态改变行为 | 状态机 |
| 策略 Strategy | 可互换算法 | 多算法切换 |
| 模板方法 Template | 骨架 + 钩子 | 父类定步骤 |
| 访问者 Visitor | 对结构外操作 | 双重分派 |
二、模式选择速查(案例必备)
| 需求场景 | 推荐模式 |
|---|---|
| 只能有一个实例(配置/连接池) | 单例 |
| 不同条件创建不同对象 | 工厂方法 / 抽象工厂 |
| 统一接口对接不同第三方 | 适配器 |
| 多个对象监听一个对象变化 | 观察者 |
| 多种算法/支付/排序可切换 | 策略 |
| 权限校验、日志、缓存 | 代理 / 装饰 |
| 请求经多个处理器逐级处理 | 责任链 |
| 简化复杂子系统调用 | 外观 |
| 状态多变的对象 | 状态机 |
| 分步构建复杂对象 | 建造者 |
三、构件复用 / CBSD ⭐⭐
构件(Component)
系统中具有 独立功能、明确接口、可独立部署 的软件单元。
构件 3 大特征
- 可复用性
- 独立性(可独立部署、独立交付)
- 组合性(可与其他构件组装)
CBSD 开发流程
- 构件获取
- 构件管理
- 构件分类与检索
- 构件复用
- 构件组装
主流构件标准
- CORBA(OMG):跨语言对象总线
- EJB(Sun/Oracle):Java 企业构件
- COM/DCOM/.NET(Microsoft)
四、答题模板
题型:你的项目用了哪些设计模式?(论文常用)
"在 XX 项目中,我采用了以下设计模式:
① 工厂模式 创建不同支付通道,新增支付方式无需改主流程;
② 策略模式 切换不同折扣算法,降低 if/else 复杂度;
③ 观察者模式 实现订单状态变更通知库存、物流、积分;
④ 代理模式 实现 AOP,统一处理日志、权限、限流;
⑤ 单例模式 管理数据库连接池、配置加载。
这些模式提升了系统的 可维护性、可扩展性、可复用性。"
📘 常考补充 · 设计模式 完