场景

OA审批:主管1天,经理3天,老板N

传统思维

通过if()else()处理

传统思维无法解决的问题

违背开闭原则:扩展一条链则需改变客户端

结构

为每个节点创建一个handle
上级节点包含下级节点引用
请求封装为一个每 个节点都能处理的对象

需考虑点

新增节点需改动前节点

优化

问题描述

每个handle应当有连接的部分:比如此例中的天数。
创建一个抽象类提取每个handle共有部分,以及私有的天数。