java设计模式之责任链模式
来源:互联网 发布:网络广告公司价格表 编辑:程序博客网 时间:2024/06/08 03:30
1,基本定义
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,请求者和处理者之间解耦,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
2,基本角色
抽象处理者角色:定义处理方法,以配置是否具有下个节点(Handler)对象.具体处理者角色:定义处理方法的具体执行逻辑,判断是否可以处理该请求,如果可以就处理(返回结果结束);如果不行,就查看是否有下个节点,如果有,就传递给下个节点处理.
3,责任链模式模型图
4,使用场景
责任链模式使用的场景还是蛮多的,比如在工作中,小明发现了一个Bug,要修复这个Bug,需要改动的地方很多,影响面很大,稍有不慎,会影响到项目开发排期,小明不该随意改动,这时候他首先请示上级,这个Bug该怎么处理,上级一听,发现事态严重,小bug自己可以搞定,但影响面这么大,出了篓子自己担不起责任,于是上级接着请示他的上级,这样一层层传递,最终,拥有何时职权的领导发出指示,该bug该如何处理。使用代码标示如下:
// 抽象处理者角色public Abstract Class Handler{ protected Handler mNext; protected static final int PROCESS = 0; protected static final int FOWARD = 1; protected static final int FINISH= 2; public final int handleRequest(AbsRequest request) { int result = handle(request); if(result == 1) { if(mNext != null) { mNext.handle(request); } else { // discard this request } } else if(result == 2){ // finsish the request } } protected abstract int handle(AbsRequest request); protected Handler getHandler(){ return mNext; } protected void setHandler(Handler handler) { this.mNext = handler; }}// 具体处理者角色public class ConcreteHandler extends Handler { /** * 处理方法,调用此方法处理请求 */ @Override public int handle(AbsRequest request) { // 具体处理的代码 if(true) { // 处理具体事务 .... return FINISH; } else { // 处理具体事务 .... return FOWARD; } }}// 请求的业务类public Abstract class AbstractRequest{ public String content; public AbstractRequest(String content){ this.content = content; } public String getCont(){ return content; }}public class helloReq extends AbstractRequest{ public String content; public helloReq (String content){ this.content = content; }}//Clietpublic class Client { public static void main(String[] args) { //组装责任链 Handler handler1 = new ConcreteHandler(); Handler handler2 = new ConcreteHandler(); handler1.setHandler(handler2); AbstractRequest req = new helloReq("Tommy") //提交请求 handler1.handleRequest(req); }}
阅读全文
0 0
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java 设计模式之责任链模式
- Java设计模式之责任链模式
- 《Java设计模式》之责任链模式
- 《Java设计模式 》之责任链模式
- JAVA设计模式之:责任链模式
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- 《java设计模式》之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- JAVA设计模式之责任链模式
- java设计模式之责任链模式
- python入门系列10:函数1
- 打开APP协议
- 分布式、微服务、云架构
- SpringMVC学习笔记(1)-----所需的配置文件
- 微信签名错误解决步骤
- java设计模式之责任链模式
- SDUT3333&3332 下一较大值
- css样式引入方法
- js fun.apply 装饰器(重新定义一个函数)
- npm的 --save 和 --save-dev 之间的区别
- Kylin 源码阅读之补充API Documnet
- Mac上的VSCode中格式化代码报错
- 面向对象六大原则
- php 小技巧