没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
![](https://upload-images.jianshu.io/upload_images/595349-6dd228cf6cee0592.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##1.简述
**责任链模式(Chain of Responsibility)**,行为型设计模式之一。什么是责任链呢?这个链的形式更像是数据结构中的单链表,链中的每个节点都有自己的职责,同时也持有下一个节点的引用,属于自己职责范围内的请求就自行处理,并完成请求的处理;而不属于的职责就传递给下一个节点。每个节点都是如此循环,直至请求被处理或者已经没有处理节点。
这种设计模式是为了避免请求的发送者和接收者之间的耦合关系,而责任链就是中间的请求处理者,其中可能包括多个有可能处理请求的对象,并将这些对象炼成一条链。这样也使得请求发送者无需关心请求的处理细节和请求的传递。
![责任链模式.png](https://upload-images.jianshu.io/upload_images/595349-eea9ef31f92adee2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* Client:客户端,请求的发起者
* Handler:抽象处理者,声明一个请求方法,并在其中保持一个对下一个处理节点Handler对象的引用
* ConcreteHandler:具体处理角色,对请求进行处理;如果不能处理则将请求转发给下一个节点对象处理
> 这是一个基本的结构描述,实际应用中会有进一步的封装。
##2.案例实现
以公司正常请假为例,1天以内的假需要客户端部门主管签字,3天以内(不包含3天)需要技术部门主管签字,3天及以上就需要找CEO签字。
最简单的就是使用`if-else`实现,但是结构并不是那么美观,试着用责任链模式来实现。
首先是假条的类,包含姓名、请假原因和请假时间,使用`final`声明属性只是为了避免外部修改属性而已。
```
/** 假条的对象 */
public class LeaveNote {
final String name;
final String
点击阅读更多
资源评论
RandyRhoads
- 粉丝: 26
- 资源: 296
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功