第三章 设计模式方法论

3.1 设计模式分类体系

设计模式三大类

🔄 行为型(11种)
关注对象间的通信

责任链 Chain of Responsibility

命令 Command

迭代器 Iterator

中介者 Mediator

备忘录 Memento

观察者 Observer

状态 State

策略 Strategy

模板方法 Template Method

访问者 Visitor

解释器 Interpreter

🧱 结构型(7种)
关注类与对象的组合

适配器 Adapter

桥接 Bridge

组合 Composite

装饰器 Decorator

门面 Facade

享元 Flyweight

代理 Proxy

🏗️ 创建型(5种)
关注对象创建过程

单例 Singleton

工厂方法 Factory Method

抽象工厂 Abstract Factory

建造者 Builder

原型 Prototype

3.2 模式选择决策树

核心思想:设计模式不是背诵的套路,而是从变化类型推导出的必然解法。

行为步骤固定
子步骤变化

算法族可互换
运行时切换

请求需沿链处理
处理者不确定

需运行时注册
查找处理器

需统一创建接口
创建逻辑变化

需动态添加职责
不影响其他对象

需统一接口访问
子系统复杂

抽象与实现独立变化

需一对多依赖通知

需统一接口兼容
已有接口不匹配

需延迟创建开销大的对象

🎯 识别变化类型

模板方法
Template Method

策略模式
Strategy

责任链
Chain of Responsibility

注册表模式
Registry

工厂方法
Factory Method

装饰器模式
Decorator

门面模式
Facade

桥接模式
Bridge

观察者模式
Observer

适配器模式
Adapter

代理模式
Proxy

3.3 四步推演法

四步推演法:从需求到模式

不满足
回退

📋 Step 1:识别变化点
———————
什么在变?
变化的频率?
变化的维度?

🔍 Step 2:分析约束条件
———————
性能要求?
扩展方向?
依赖关系?
团队规模?

📐 Step 3:选择设计结构
———————
变化类型 → 设计模式
约束条件 → 模式变体
依赖关系 → 组合方式

✅ Step 4:验证与评估
———————
开闭原则?
耦合度/内聚度?
扩展成本?
理解成本?

3.4 模式组合论

单一模式有局限,组合模式威力大

组合的价值

常见模式组合

模式组合公式

完整方案 =
接口(契约) +
抽象类(模板) +
实现类(策略) +
注册表(路由)
=
WHAT + HOW-T + HOW-D + WHERE

策略 + 模板方法
接口定义契约 + 抽象类复用共性

策略 + 注册表
接口定义契约 + 运行时路由

策略 + 模板 + 注册表
完整的三级体系

责任链 + 策略
链式处理 + 每节点策略

装饰器 + 策略
动态增强 + 算法互换

门面 + 策略
简化接口 + 内部灵活

1+1 > 2
解决单一模式无法解决的问题

每个模式负责一个维度
职责清晰

组合可渐进式引入
不必一步到位

3.5 反模式识别

✅ 对应正模式

🚫 常见反模式

重构

重构

重构

重构

重构

重构

重构

上帝接口
一个接口包含所有方法
→ 违反ISP

过度继承
继承层级超过3层
→ 脆弱基类

硬编码策略
if-else选择策略
→ 违反OCP

无模板的重复
多个实现大量重复逻辑
→ 违反DRY

无注册表的路由
手动创建策略实例
→ 违反DIP

过早优化
为假设的性能问题设计
→ 违反YAGNI

魔法数字
硬编码常量散落各处
→ 违反可维护性

接口隔离
按职责拆分接口

组合优于继承
委托+策略替代继承

策略模式+注册表
Map路由替代if-else

模板方法
抽象类封装共性

依赖注入
容器管理生命周期

简单设计
先正确再优化

常量提取
集中管理配置


Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐