} else {
// 其他人一律不同意
str = "失败:总经理不同意【" + user + "】的聚餐费用,金额为" + fee + "元";
}
} else {
// 如果还有后继的处理对象,继续传递
if (getSuccessor() != null) {
return getSuccessor().handleFeeRequest(user, fee);
}
}
return str;
}
}
客户端类
[java]
package com.bankht.ChainOfResponsibility.apply;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-29 下午02:14:27
*
* @类说明 :客户端类
*/
public class Client {
public static void main(String[] args) {
// 先要组装责任链
Handler h1 = new GeneralManager();
Handler h2 = new DeptManager();
Handler h3 = new ProjectManager();
h3.setSuccessor(h2);
h2.setSuccessor(h1);
// 开始测试
String test1 = h3.handleFeeRequest("张三", 300);
System.out.println("test1 = " + test1);
String test2 = h3.handleFeeRequest("李四", 300);
System.out.println("test2 = " + test2);
System.out.println("---------------------------------------");
String test3 = h3.handleFeeRequest("张三", 700);
System.out.println("test3 = " + test3);
String test4 = h3.handleFeeRequest("李四", 700);
System.out.println("test4 = " + test4);
System.out.println("---------------------------------------");
String test5 = h3.handleFeeRequest("张三", 1500);
System.out.println("test5 = " + test5);
String test6 = h3.handleFeeRequest("李四", 1500);
System.out.println("test6 = " + test6);
}
}
package com.bankht.ChainOfResponsibility.apply;
/**
* @author: 特种兵—AK47
* @创建时间:2012-6-29 下午02:14:27
*
* @类说明 :客户端类
*/
public class Client {
public static void main(String[] args) {
// 先要组装责任链
Handler h1 = new GeneralManager();
Handler h2 = new DeptManager();
Handler h3 = new ProjectManager();
h3.setSuccessor(h2);
h2.setSuccessor(h1);
// 开始测试
String test1 = h3.handleFeeRequest("张三", 300);
System.out.println("test1 = " + test1);
String test2 = h3.handleFeeRequest("李四", 300);
System.out.println("test2 = " + test2);
System.out.println("---------------------------------------");
String test3 = h3.handleFeeRequest("张三", 700);
System.out.println("test3 = " + test3);
String test4 = h3.handleFeeRequest("李四", 700);
System.out.println("test4 = " + test4);
System.out.println("---------------------------------------");
String test5 = h3.handleFeeRequest("张三", 1500);
System.out.println("test5 = " + test5);
String test6 = h3.handleFeeRequest("李四", 1500);
System.out.println("test6 = " + test6);
}
}
运行结果如下所示:
[html]
test1 = 成功:项目经理同意【张三】的聚餐费用,金额为300.0元
test2 = 失败:项目经理不同意【李四】的聚餐费用,金额为300.0元
---------------------------------------
test3 = 成功:部门经理同意【张三】的聚餐费用,金额为700.0元
test4 = 失败:部门经理不同意【李四】的聚餐费用,金额为700.0元
---------------------------------------
test5 = 成功:总经理同意【张三】的聚餐费用,金额为1500.0元
test6 = 失败:总经理不同意【李四】的聚餐费用,金额为1500.0元
test1 = 成功:项目经理同意【张三】的聚餐费用,金额为300.0元
test2 = 失败:项目经理不同意【李四】的聚餐费用,金额为300.0元
---------------------------------------
test3 = 成功:部门经理同意【张三】的聚餐费用,金额为700.0元
test4 = 失败:部门经理不同意【李四】的聚餐费用,金额为700.0元
---------------------------------------
test5 = 成功:总经理同意【张三】的聚餐费用,金额为1500.0元
test6 = 失败:总经理不同意【李四】的聚餐费用,金额为1500.0元
纯的与不纯的责任链模式
一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个:一是承担责任,而是把责任推给下家。不允许出现某一个具体处理者对象在承担了一部分责任后又 把责任向下传的情况。
在一个纯的责任链模式里面,一个请求必须被某一个处理者对象所接收;在一