首页 > 代码库 > 责任链模式
责任链模式
逻辑:
请假这个事情,相信每个人都不陌生。
我们公司是个相对很宽松的公司。
在公司里,如果你的请假时间小于0.5天,那么只需要向项目经理打声招呼就OK了。
如果超过了0.5天,但是还小于2天,那么就要去找人事部处理,当然,这就要扣工资了。
如果超过了2天,你就需要去找总经理了,工资当然也玩完了。
类图:
代码:
Requester
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: Requester * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午4:35:56 */public class Requester { private int day; private String reason; public int getDay() { return day; } public void setDay(int day) { this.day = day; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public Requester(int day, String reason) { this.day = day; this.reason = reason; }}
Boss
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: Boss * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午4:38:29 */public abstract class Boss { private String name; private Boss successor; public Boss(String str){ this.name = str; } public abstract boolean passRequest(Requester req); public String getName() { return name; } public void setName(String name) { this.name = name; } public Boss getSuccessor() { return successor; } public void setSuccessor(Boss successor) { this.successor = successor; }}
ProjectManager
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: ProjectManager * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午4:43:12 */public class ProjectManager extends Boss { public ProjectManager(String str) { super(str); } public boolean passRequest(Requester req) { if(null != req){ if(req.getDay() <=0.5){ System.out.println(this.getName() + "处理!"); return true; }else{ this.getSuccessor().passRequest(req); } } return false; }}
HumanResource
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: HumanResource * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午4:46:06 */public class HumanResource extends Boss{ public HumanResource(String str) { super(str); } public boolean passRequest(Requester req){ if(null != req){ if(req.getDay()<=2){ System.out.println(this.getName() + "处理!"); return true; }else{ this.getSuccessor().passRequest(req); } } return false; }}
Manager
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: Manager * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午4:50:17 */public class Manager extends Boss { public Manager(String str) { super(str); } public boolean passRequest(Requester req) { if(null != req && "正当理由".equals(req.getReason())){ System.out.println(this.getName() + "处理!"); return true; } return false; }}
MainTest
package designMode.responsibility;/** * @Package designMode.responsibility * @ClassName: MainTest * @Description: TODO(这里用一句话描述这个类的作用) * @author andy * @date 2014-8-26 下午5:02:52 */public class MainTest { public static void main(String[] args) { Requester requester = new Requester(1, "正当理由"); Boss a = new ProjectManager("项目经理"); Boss b = new HumanResource("人事部"); Boss c = new Manager("总经理"); a.setSuccessor(b); b.setSuccessor(c); a.passRequest(requester); }}
控制台打印结果:人事部处理!
定义:待续
参考: http://www.cnblogs.com/kym/archive/2009/04/06/1430078.html
责任链模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。