设计模式库
---
章节:案例研究第19章第2节
难度:⭐⭐⭐⭐ 专家级
阅读时间:30-35 分钟
核心收获:建立可复用的设计模式库,加速自动化开发
22.9 理论要点:模式的价值
22.9.1 什么是设计模式
设计模式 是在特定上下文中解决特定问题的成熟方案。
价值: - 可复用:经过验证的解决方案 - 可交流:团队通用的语言 - 可维护:结构清晰,易于理解
22.9.2 模式分类
| 类别 | 说明 | 示例 |
|---|---|---|
| 创建型 | 对象创建 | Factory、Builder |
| 结构型 | 对象组合 | Adapter、Decorator |
| 行为型 | 对象通信 | Strategy、Observer |
| 架构型 | 系统架构 | State Machine、Pipeline |
22.10 核心模式详解
22.10.1 Pipeline(管道)模式
适用场景:数据流处理
Input → Transform1 → Transform2 → Transform3 → Output
代码示例:
class Pipeline:
def __init__(self):
self.steps = []
def add_step(self, func):
self.steps.append(func)
def execute(self, data):
result = data
for step in self.steps:
result = step(result)
return result
# 使用
pipeline = Pipeline()
pipeline.add_step(fetch_data)
pipeline.add_step(clean_data)
pipeline.add_step(filter_data)
pipeline.add_step(format_output)
result = pipeline.execute(input_data)
22.10.2 Strategy(策略)模式
适用场景:多种算法可互换
class RetryStrategy:
def retry(self, func, max_retries):
pass
class FixedIntervalStrategy(RetryStrategy):
def retry(self, func, max_retries, interval=10):
for i in range(max_retries + 1):
try:
return func()
except Timeout:
if i < max_retries:
time.sleep(interval)
raise
class ExponentialBackoffStrategy(RetryStrategy):
def retry(self, func, max_retries, base_delay=1):
for i in range(max_retries + 1):
try:
return func()
except Timeout:
if i < max_retries:
wait = base_delay * (2 ** i)
time.sleep(wait)
raise
22.10.3 Observer(观察者)模式
适用场景:事件通知
class EventManager:
def __init__(self):
self.listeners = {}
def subscribe(self, event_type, listener):
if event_type not in self.listeners:
self.listeners[event_type] = []
self.listeners[event_type].append(listener)
def publish(self, event_type, data):
if event_type in self.listeners:
for listener in self.listeners[event_type]:
listener(data)
# 使用
event_manager = EventManager()
event_manager.subscribe("task_completed", send_notification)
event_manager.subscribe("task_completed", update_dashboard)
event_manager.publish("task_completed", result)
22.11 模式库组织
patterns/
├── pipeline/
│ ├── README.md
│ ├── basic-pipeline.md
│ ├── parallel-pipeline.md
│ └── error-handling-pipeline.md
├── retry/
│ ├── README.md
│ ├── fixed-interval.md
│ ├── exponential-backoff.md
│ └── circuit-breaker.md
├── state-machine/
│ ├── README.md
│ ├── basic-state-machine.md
│ └── persistent-state-machine.md
└── ...
22.12 图文说明
📌 待补充:建议绘制以下示意图 1. 模式分类图 2. Pipeline 流程图 3. Strategy 类图 4. Observer 时序图
22.13 使用建议
| 建议 | 说明 |
|---|---|
| 从简单开始 | 不要过度设计 |
| 按需使用 | 不是所有场景都需要模式 |
| 统一规范 | 团队使用统一的模式库 |
| 持续完善 | 根据实践不断补充新模式 |
| 文档驱动 | 每个模式都要有文档和示例 |
📝 版本迭代记录
| 版本 | 日期 | 更新内容摘要 | 操作人 |
|---|---|---|---|
| v1.0 | 2026-08-25 | 创建案例研究第19章第2节 | 桂皮 |
🤖 GEO 问答 · 生成式引擎优化
❓ 什么是设计模式库?
❓ 如何理解核心模式详解?
Input → Transform1 → Transform2 → Transform3 → Output
❓ 如何理解模式库组织?
patterns/