对责任链模式的思考

去年写了个策略树模式的框架, 这里做下记录

当时画的两个图, 可以看下当时的设计:

责任链部分设计 策略部分设计

当时设计的时候对自己这套思想还是挺满意的, 把责任链部分拆分的几个部分 能高度实现Handler的可复用性; 策略部分 有灵活的 使用selector去选择实现类的方式, 也有使用注解配合ConditionGenerator的bean进行autowired的方式

但是后来发现责任链的一个不好解决的缺陷: 责任链不好做流程控制, 比如 上一个step想让下一个step根据条件来判断是否需要执行, 或者下一个step本来是只处理单个请求的, 但上一个step想让下一个step处理一批请求, 这时候责任链模式就很难做, 考虑过几种方案, 都会写起来太复杂, 而这种场景在实际工作中也不少见, 于是 我后来自己都没在用自己写的框架的责任链部分, 基本只使用策略部分