java设计模式---职责链模式
来源:互联网 发布:addictive drums mac 编辑:程序博客网 时间:2024/04/29 18:10
职责链的本质:分离职责,动态组合
样例:
/** * 定义职责对象的接口 * */public abstract class Handler { protected Handler successor; /** * 设置下一个处理请求对象 * @param successor */ public void setSuccessor(Handler successor) { this.successor = successor; } /** * 处理聚餐费用的申请 * @param user 申请人 * @param fee 申请的费用 * @return */ public abstract String handlerFeeRequest(String user, double fee);}
/** * 部门经理审批 * */public class DepManager extends Handler { @Override public String handlerFeeRequest(String user, double fee) { String str = ""; if(fee < 1000) { if("Joe".equals(user)) { str = "Department manager agreed " + user + "'s request, the fee is $" + fee; } else { str = "Department manager didn't agree " + user + "'s request."; } return str; } // more than $1000, next to others. if(this.successor != null) { return successor.handlerFeeRequest(user, fee); } return str; }}/** * 项目经理审批 * */public class ProjectManager extends Handler { @Override public String handlerFeeRequest(String user, double fee) { String str = ""; if(fee < 500) { if("Joe".equals(user)) { str = "Project manager agreed " + user + "'s request, the fee is $" + fee; } else { str = "Project manager didn't agree " + user + "'s request."; } return str; } // more than $500, next to others. if(this.successor != null) { return successor.handlerFeeRequest(user, fee); } return str; }}/** * 总经理审批 * */public class GeneralManager extends Handler { @Override public String handlerFeeRequest(String user, double fee) { String str = ""; if(fee >= 1000) { if("Joe".equals(user)) { str = "General manager agreed " + user + "'s request, the fee is $" + fee; } else { str = "General manager didn't agree " + user + "'s request."; } return str; } // next to others. if(this.successor != null) { return successor.handlerFeeRequest(user, fee); } return str; }}
public class Client { public static void main(String[] args) { Handler h1 = new ProjectManager(); Handler h2 = new DepManager(); Handler h3 = new GeneralManager(); h2.setSuccessor(h3); h1.setSuccessor(h2); String ret1 = h1.handlerFeeRequest("Joe", 300); System.out.println(ret1); String ret2 = h1.handlerFeeRequest("Yoyo", 300); System.out.println(ret2); String ret3 = h1.handlerFeeRequest("Joe", 800); System.out.println(ret3); String ret4 = h1.handlerFeeRequest("Yoyo", 800); System.out.println(ret4); String ret5 = h1.handlerFeeRequest("Joe", 1300); System.out.println(ret5); String ret6 = h1.handlerFeeRequest("Yoyo", 1300); System.out.println(ret6); }}
- java设计模式---职责链模式
- java设计模式---职责链模式
- java设计模式系列--职责链模式
- Java 设计模式 -- 职责链模式
- java设计模式_职责链模式
- JAVA设计模式--职责链模式
- JAVA 设计模式 职责链模式
- Java设计模式之职责链模式
- 职责链设计模式
- 【设计模式】职责链
- 设计模式---职责链
- 职责链设计模式
- 职责链设计模式
- Java设计模式之责任链模式、职责链模式
- Java设计模式之责任链模式、职责链模式
- Java设计模式之责任链模式、职责链模式
- Java设计模式之责任链模式、职责链模式
- Java设计模式之责任链模式、职责链模式
- NOJ [F] 懒惰的风纪委Elaine 求一堆数能组成多少个数小于等于n
- N皇后位运算版
- 忙碌起来
- 杭电1492-The number of divisors(约数) about Humble Numbers
- 字符串分割
- java设计模式---职责链模式
- vs2005与vs2008的转化
- 数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径
- 贪吃蛇
- 让爱变的有力量
- JQuery 模板与 css 设置不当造成 jQuery Ui 不能正常显示
- The Hound of the Baskervilles——1、The Case Begins
- document.all用法+js获取select标签中所选的值
- 互斥锁程序解析