设计模式-职责链模式

背景

OA采购审批系统,有以下需求:

如果金额小于等于5000,由教导主任审批

如果金额小于等于10000,由系主任审批

如果金额小于等于30000,由副校长审批

如果金额大于30000,由校长审批

传统思路:

用一个类,通过if else判断,传入金额数,返回审批人。

问题:

利用到if else 进行判断,如果审批人和金额发生变化需要进行大幅度更改。

必须了解所有审批情况。

请求与审批人之间是强耦合关系。

基本介绍

是一个行为模式,为请求创建一个接收者对象的链。

每个处理者都包含另一个权限高一级处理者的引用

将请求交给权限最低的处理者,判断自己是否能处理,如果不能处理,则交给下一级处理者,以此类推,如果最高级处理者也无法处理,则驳回请求。

三个角色

①Handler:一个处理者抽象类,声明了处理方式和下一级处理者的引用

②ConcreteHandler:具体处理者,继承自Handler抽象类。

③Request:请求类,将会被传入处理者类中

具体实现

创建Approver类,代表处理者,声明下一级处理者和一个处理方法。

创建具体处理者:教导主任、系主任、副校长、校长,继承自Approver类,

教导主任的下一级Approver是系主任,系主任是副校长,以此类推,校长没有下一级Approver

具体处理者在实现处理方法时,先判断金额是否是自己可以处理的,能处理的就直接处理,如果不能处理则调用下一级Approver的处理方法。

创建PurchaseRequest类,代表请求。

在客户端调用时,创建一个PurchaseRequest,把这个请求传入教导主任的处理方法中,并调用这个处理方法,则可以自动处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值