🌟 引言:当功能扩展遇到流程控制
场景痛点:
假设你在开发一个HTTP请求处理框架,需要实现以下需求:
- 支持按顺序执行多个处理步骤(认证、日志、压缩等)
- 允许动态添加/移除处理模块
- 每个处理模块需要灵活扩展功能(如日志模块要支持JSON/文本格式)
若仅用责任链模式:
public abstract class Handler {protected Handler next;public void setNext(Handler next) {this.next = next;}public abstract void handle(Request request);
}
问题暴露:
- 处理器的功能扩展需要修改类代码 ❌
- 无法动态组合处理能力 ❌
- 功能叠加导致子类爆炸 ❌
模式组合的价值:
- 灵活装配:装饰器动态增强处理器能力
- 流程可控:责任链管理处理顺序
- 无限扩展:任意组合功能模块
📚 一、模式概念回顾
1.1 装饰器模式(Decorator Pattern)
定义:动态地给对象添加额外职责,相比继承更加灵活。
核心价值:透明扩展对象功能,遵循开闭原则。
1.2 责任链模式(Chain of Responsibility)
定义:将请求的发送者和接收者解耦,使多个对象都有机会处理请求。
核心价值:灵活控制处理流程。