天天看点

设计模式-责任链设计模式

责任链设计模式,是行为型设计模式的巅峰之作。

现在有一个场景,请假申请。请假时间的长短,需要不同级别的领导才能审批。

万物皆对象嘛,请假需要工号、姓名、原因、时长、结果等等,那我们来定义一个请假的类。其实其就是一个上下文环境(context),保存业务处理中参数-----中间结果-----最终结果。行为型设计模式重用的标配,把行为转移。

请假需要new一个实例:

第一种方式,审批逻辑都写在上端,直接就是需求翻译,没有任何加工,谈不上什么扩展,面向过程:

第二种方式,面向对象:封装--继承--多态,转移业务逻辑,也只是一个翻译机,翻译完+面向对象,其实完全没有涉及加工没有思考。

领导类s:

设计模式-责任链设计模式
设计模式-责任链设计模式

view code

下面进行逻辑的翻译:

不要直接翻译的逻辑,需要涉及,现在的场景分析是,1、权限范围内,审批通过;2、权限范围外,交给下一环节审批,写的代码又多了一个,指定洗衣环节,甩锅大法开始。

首先定义一个抽象父类:

领导类需要继承这个抽象类:

其他的领导类以此类推.....

调用的时候,只需要找最低权限的人,去审批

以上,转移了申请提交的逻辑,这次符合实际情况,有了自己的思考和设计在里面。

甩锅大法开始了,一样,领导类需要实现抽象父类,不过在audit方法中稍作了改动

设计模式-责任链设计模式
设计模式-责任链设计模式

下面需要找领导审批了:

以上,把流畅环节逻辑从业务类转移了。

继续阅读