设计模式系列之二_责任链模式(Chain of Responsibility)
2013-03-12 10:05
656 查看
1.职责链模式定义
为了避免请求的发送者和接收者之间的耦合关系,使多个接受对象都有机会处理请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2.Chain of Responsibility模式主要涉及两个角色
1)抽象处理者角色(Handler):它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
2)具体处理者角色(ConcreteHandler):实现抽象角色中定义的接口,并处理它所负责的请求。
如果不能处理则访问它的后继者。
如下图:
3.职责链模式应用--请假管理
假设请假的流程如下:1.在公司里,如果你的请假时间小于0.5天,那么只需要向项目经理打声招呼就OK了。
2.如果超过了0.5天,但是还小于2天,那么就要去找人事部处理,当然,这就要扣工资了。
3.如果超过了2天,你就需要去找总经理了,工资当然也玩完了。
4.Java代码实现
如下:/** * @Title:请假请求类 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:40:13 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public class Request { private float day; private String reason; public Request() { } public Request(int day,String reason) { this.day=day; this.reason=reason; } public float getDay() { return day; } public void setDay(float day) { this.day = day; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } }
/** * @Title:请假处理接口 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:43:25 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public interface ProcessRequest{ public boolean handle(Request request); }
/** * @Title:项目经理--实现请假接口 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:44:38 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public class ProjectManager implements ProcessRequest{ private ProcessRequest boss; public boolean handle(Request request) { float day=request.getDay(); if(day<=0.5) { System.out.println("PM 已经批准处理成功!请假原因:"+request.getReason()); return true; } return boss.handle(request); } public ProcessRequest getBoss() { return boss; } public void setBoss(ProcessRequest boss) { this.boss = boss; } }
/** * @Title:项目经理--实现请假接口 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:47:39 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public class HR implements ProcessRequest{ private ProcessRequest boss; @Override public boolean handle(Request request) { float day = request.getDay(); if(day>0.5&&day<=2) { System.out.println("HR已经批准,处理成功!请假原因:"+request.getReason()); return true; } return boss.handle(request); } public ProcessRequest getBoss() { return boss; } public void setBoss(ProcessRequest boss) { this.boss = boss; } }
/** * @Title:经理--实现请假接口 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:50:38 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public class Manager implements ProcessRequest{ private ProcessRequest boss; @Override public boolean handle(Request request) { float day=request.getDay(); if(day>2) { System.out.println("总经理审批通过!请假原因:"+request.getReason()); } return false; } public ProcessRequest getBoss() { return boss; } public void setBoss(ProcessRequest boss) { this.boss = boss; } }
/** * @Title:请假流程测试类 * @Description:TODO * @Company: Orclight's Studio * @author: shuzl 2013-3-12 上午09:53:24 * @motto: Never put off what you can do today until Tomorrow * @version 1.0.0 */ public class TestRequest { public static void main(String[] args) { //1.发出请求 Request request = new Request(3,"病假"); //2.创建处理对象 ProjectManager pm = new ProjectManager(); HR hr = new HR(); Manager manager = new Manager(); //3.设置chain的流向,关联关系 pm.setBoss(hr); hr.setBoss(manager); //4.处理请求 pm.handle(request); } }
参考文章:
1.设计模式学习笔记(十九)—Chain of Responsibility职责链模式
2.重温设计模式(三)——职责链模式(chain of responsibility)
相关文章推荐
- 设计模式之---责任链模式(Chain of Responsibility)
- 浅谈Java设计模式(十七)责任链模式(Chain of Responsibility)
- 【行为型模式】责任链模式(chain of responsibility)之23种java设计模式
- 设计模式系列随笔- Chain Of Responsibility 职责链模式
- 设计模式初探-责任链模式(CHAIN OF RESPONSIBILITY)
- 设计模式:责任链模式(Chain of Responsibility)
- Java设计模式--责任链模式(Chain of Responsibility)
- Java设计模式----责任链模式(Chain of Responsibility)
- 设计模式系列 - Chain of Responsibility模式 推荐
- 【Unity与23种设计模式】责任链模式(Chain of Responsibility)
- Java设计模式-责任链模式(Chain of Responsibility)
- 设计模式(17)-责任链模式(Chain of Responsibility)
- 设计模式——责任链模式(Chain Of Responsibility)
- 23种设计模式之责任链模式(Chain of Responsibility)
- GOF23设计模式之责任链模式(chain of responsibility)与结构型模式总结经典
- 十六.行为型设计模式——Chain of Responsibility(责任链模式)
- Java设计模式之--责任链模式(Chain of Responsibility)
- GOF23设计模式之责任链模式(chain of responsibility)之实现
- 设计模式(4)-行为型-责任链模式(Chain of Responsibility)
- 设计模式——行为型模式之借助责任链模式(Chain of Responsibility)灵活完成链式处理(五)