设计模式-责任链模式实例
来源:互联网 发布:如何获取windows正版 编辑:程序博客网 时间:2024/06/03 19:56
职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链。请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦。
生活中这种例子如:在公司中申请一些东西需要走流程 员工提出申请-> 部门经理审批 -> 副总经理审批->总经理审批 ,这个过程每个流程都需要审批,只有审批通过才可以进入下一个流程,代码流程如下:
首先创建一个抽象类:
package cn.base.model.handler;import cn.base.model.handler.impl.HandleVO;/** * @author gu.fei * @version 2017-03-21 14:00 */public abstract class Handler { private Handler next; public Handler() { } public Handler(Handler next) { this.next = next; } public abstract boolean doHandleRequest(HandleVO vo); public Handler getNext() { return this.next; }}
然后分别创建部门经理,副总经理,总经理的实现类:
部门经理
package cn.base.model.handler.impl;import cn.base.model.handler.Handler;/** * @author gu.fei * @version 2017-03-21 14:07 */public class BumenjingliHandler extends Handler { public BumenjingliHandler(Handler next) { super(next); } @Override public boolean doHandleRequest(HandleVO vo) { if(vo.getI() == 0) { System.out.println("部门经理审核通过,下一步副经理审核!"); return getNext().doHandleRequest(vo); } System.out.println("部门经理审核不通过!"); return false; }}副总经理
package cn.base.model.handler.impl;import cn.base.model.handler.Handler;/** * @author gu.fei * @version 2017-03-21 14:14 */public class FujingliHandler extends Handler { public FujingliHandler(Handler next) { super(next); } @Override public boolean doHandleRequest(HandleVO vo) { if(vo.getJ() == 0) { System.out.println("副总经理审核通过,下一步总经理审核!"); return getNext().doHandleRequest(vo); } System.out.println("副总经理审核不通过!"); return false; }}
总经理
package cn.base.model.handler.impl;import cn.base.model.handler.Handler;/** * @author gu.fei * @version 2017-03-21 14:05 */public class ZongjingliHandler extends Handler { @Override public boolean doHandleRequest(HandleVO vo) { if(vo.getI() == 0 && vo.getJ() == 0) { System.out.println("总经理批准了!"); return true; } System.out.println("总经理审核不通过!"); return false; }}
然后员工类
package cn.base.model.handler.impl;import cn.base.model.handler.Handler;/** * @author gu.fei * @version 2017-03-21 14:09 */public class Member { public static void main(String[] args) { Handler bm = new BumenjingliHandler( new FujingliHandler( new ZongjingliHandler())); HandleVO vo = new HandleVO(0,0); System.out.println(bm.doHandleRequest(vo)); }}
组员类中构造了责任链关系,然后运行结果
部门经理审核通过,下一步副经理审核!
副总经理审核通过,下一步总经理审核!
总经理批准了!
true
HandleVO vo = new HandleVO(0,0); //参数值相当于对应的条件,通过改变条件可以得出不一样的处理结果 !
0 0
- 设计模式实例学习-责任链模式
- 设计模式-责任链模式实例
- 责任链模式实例
- 责任链设计模式
- 责任链设计模式
- 设计模式---责任链
- 责任链设计模式
- 设计模式----责任链
- 设计模式-责任链
- 责任链设计模式
- 责任链设计模式
- 设计模式:责任链
- [设计]责任链模式
- 设计模式--责任链
- 责任链设计模式
- 23种设计模式C++实例之责任链模式
- JAVA 设计模式实例详解之责任链模式
- 设计模式----责任链模式
- proc文件系统
- Spring--bean标签的常用属性
- React Native--图片等比例缩放
- SQL语言 DQL,DML,DDL,DCL
- 经典排序 之 几种排序比较
- 设计模式-责任链模式实例
- 软件版本控制规范
- 杂项
- nginx设置可以默认访问index.php
- ACM练习题T-20
- Tomcat优化配置方案
- 微信团队原创分享:Android内存泄漏监控和优化技巧总结
- 数据库规范化
- IOC介绍及其简单实现,Struts+Spring