public class ChainOfResponsibilityTest1 { public static void main(String[] args) { Manager jinli = new Manager("金立"); Manager zongjian = new Manager("宗见"); Manager zhongjinli = new Manager("综劲力"); Request request = new Request(); request.setRequestType("加薪"); request.setRequestContent("小蔡请求加薪"); request.setNumber(1000); jinli.GetResult("经理",request); zongjian.GetResult("总监",request); zhongjinli.GetResult("总经理",request); System.out.println(); Request request2 = new Request(); request2.setRequestType("请假"); request2.setRequestContent("小蔡请假"); request2.setNumber(3); jinli.GetResult("经理",request2); zongjian.GetResult("总监",request2); zhongjinli.GetResult("总经理",request2); System.out.println(); } } class Request { private String requestType; public String getRequestType() { return requestType; } public void setRequestType(String requestType) { this.requestType = requestType; } private String requestContent; public String getRequestContent() { return requestContent; } public void setRequestContent(String requestContent) { this.requestContent = requestContent; } private int number; public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } } class Manager { protected String name; public Manager(String name) { this.name = name; } public void GetResult(String managerLevel,Request request) { if(managerLevel == "经理") { if(request.getRequestType() == "请假" && request.getNumber() <=2) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "我无权处理"); } } else if(managerLevel == "总监") { if(request.getRequestType() == "请假" && request.getNumber() <=5) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "我无权处理"); } } else if(managerLevel == "总经理") { if(request.getRequestType() == "请假") { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else if(request.getRequestType() == "加薪" && request.getNumber() <= 500) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else if(request.getRequestType() == "加薪" && request.getNumber() > 500) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "再说吧"); } } } } public class ChainOfResponsibilityTest2 { public static void main(String[] args) { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] requests = {2,6,5,48,9,8,54,6,9,3,21,11,18}; for(int request : requests) { h1.HandleRequest(request); } System.out.println(); } } abstract class Handler { protected Handler successor; public void SetSuccessor(Handler successor) { this.successor = successor; } abstract public void HandleRequest(int request); } class ConcreteHandler1 extends Handler { public void HandleRequest(int request) { if(request >= 0 && request < 10) { System.out.println( this.getClass().getName()+"处理请求"+request); } else if(successor != null) { successor.HandleRequest(request); } } } class ConcreteHandler2 extends Handler { public void HandleRequest(int request) { if(request >= 10 && request < 20) { System.out.println( this.getClass().getName()+"处理请求"+request); } else if(successor != null) { successor.HandleRequest(request); } } } class ConcreteHandler3 extends Handler { public void HandleRequest(int request) { if(request >= 20 && request < 30) { System.out.println( this.getClass().getName()+"处理请求"+request); } else if(successor != null) { successor.HandleRequest(request); } } } public class ChainOfResponsibilityTest3 { public static void main(String[] args) { CommonManager jinli = new CommonManager("金立"); Majordomo zongjian = new Majordomo("宗见"); GeneralManager zhongjinli = new GeneralManager("综劲力"); jinli.SetSuperior(zongjian); zongjian.SetSuperior(zhongjinli); Request request = new Request(); request.setRequestType("请假"); request.setRequestContent("小蔡请假"); request.setNumber(1); jinli.RequestApplications(request); System.out.println(); Request request2 = new Request(); request2.setRequestType("请假"); request2.setRequestContent("小蔡请假"); request2.setNumber(4); jinli.RequestApplications(request2); System.out.println(); Request request3 = new Request(); request3.setRequestType("加薪"); request3.setRequestContent("小蔡请求加薪"); request3.setNumber(500); jinli.RequestApplications(request3); System.out.println(); Request request4 = new Request(); request4.setRequestType("加薪"); request4.setRequestContent("小蔡请求加薪"); request4.setNumber(1000); jinli.RequestApplications(request4); System.out.println(); } } abstract class Manager { protected String name; protected Manager superior; public Manager(String name) { this.name = name; } public void SetSuperior(Manager superior) { this.superior = superior; } abstract public void RequestApplications(Request request); } class CommonManager extends Manager { public CommonManager(String name) { super(name); } public void RequestApplications(Request request) { if(request.getRequestType() == "请假" && request.getNumber() <= 2) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else { if(superior != null) { superior.RequestApplications(request); } } } } class Majordomo extends Manager { public Majordomo(String name) { super(name); } public void RequestApplications(Request request) { if(request.getRequestType() == "请假" && request.getNumber() <= 5) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else { if(superior != null) { superior.RequestApplications(request); } } } } class GeneralManager extends Manager { public GeneralManager(String name) { super(name); } public void RequestApplications(Request request) { if(request.getRequestType() == "请假") { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else if(request.getRequestType() == "加薪" && request.getNumber() <= 500) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "被批准"); } else if(request.getRequestType() == "加薪" && request.getNumber() > 500) { System.out.println(name + request.getRequestContent() +"数量"+ request.getNumber() + "再说吧"); } } }