设计模式-责任链模式(Java实现)

2018/10 16 19:10

设计模式概念定义:

    责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

适用场景:
1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2、你想在不明确指定接受者的情况下,想过个对象中的一个提交一个请求。
3、可处理一个请求的对象集合应该被动态指定。

注意:

    链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象。

搜集的两种实现方式

第一种:

(1)类图

(2)实例代码:

简单的例子,就是报销流程,项目经理<部门经理<总经理

其中项目经理报销额度不能大于500,则部门经理的报销额度是不大于1000,超过1000则需要总经理审核

第二种

(1)类图

(2)实例代码

在公司内部员工请假一般情况是这样的:员工在OA系统中提交一封请假邮件,该邮件会自动转发到你的直接上级领导邮箱里,如果你的请假的情况特殊的话,该邮件也会转发到你上级的上级的邮箱,根据请假的情况天数多少,系统会自动转发相应的责任人的邮箱。我们就以这样一种场景为例完成一个责任链模式的代码。为了更清晰的描述这种场景我们规定如下:
① GroupLeader(组长 ):他能批准的假期为2天,如果请假天数超过2天就将请假邮件自动转发到组长和经理邮箱。
② Manager(经理):他能批准的假期为4天以内,如果请假天数大于4天将该邮件转发到自动转发到组长、经理和部门领导的邮箱。
③ DepartmentHeader(部门领导):他能批准的假期为7天以内,如果大于7天就只批准7天。

 

 

参考资料:

https://blog.csdn.net/u012810020/article/details/71194853

https://www.cnblogs.com/fan-yuan/p/7989377.html

--转载请注明: https://www.guangboyuan.cn/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f-%e8%b4%a3%e4%bb%bb%e9%93%be%e6%a8%a1%e5%bc%8f%ef%bc%88java%e5%ae%9e%e7%8e%b0%ef%bc%89/

发表回复

(必填)