《大话设计模式》java实现之责任链模式
2017-11-22 09:02
387 查看
责任链模式各个对象的下一个处理对象在客户端指定,可以自由组合,灵活性强,状态模式各状态则是在编译时设置,即在各状态对象中指定,可对比struts的filter。
另外,书中变量的命名如jingli、zongjian、zongjingli这些是为了让读者区分,实际上不推荐使用拼音命名,我觉得还不如在name属性中设置成经理、总监、总经理比使用金利、宗剑这些要好
UML
代码结构
运行结果
另外,书中变量的命名如jingli、zongjian、zongjingli这些是为了让读者区分,实际上不推荐使用拼音命名,我觉得还不如在name属性中设置成经理、总监、总经理比使用金利、宗剑这些要好
UML
代码结构
public class Client { public static void main(String[] args) { CommonManager jinli = new CommonManager("金利"); Majordomo zongjian = new Majordomo("宗剑"); GeneralManager zongjingli = new GeneralManager("钟精励"); jinli.setSuperior(zongjian); zongjian.setSuperior(zongjingli); Request request = new Request(); request.setRequestType("请假"); request.setRequestContent("小菜请假"); request.setNumber(1); jinli.requestApplications(request); Request request2 = new Request(); request2.setRequestType("请假"); request2.setRequestContent("小菜请假"); request2.setNumber(4); jinli.requestApplications(request2); Request request3 = new Request(); request3.setRequestType("加薪"); request3.setRequestContent("小菜请求加薪"); request3.setNumber(500); jinli.requestApplications(request3); Request request4 = new Request(); request4.setRequestType("加薪"); request4.setRequestContent("小菜请求加薪"); request4.setNumber(1000); jinli.requestApplications(request4); } }
public class CommonManager extends Manager { public CommonManager(String name) { super(name); } @Override public void requestApplications(Request request) { if("请假".equals(request.getRequestType()) && request.getNumber() <= 2) { System.out.println(name + ":" + request.getRequestContent() + "数量" + request.getNumber() + "被批准"); } else { if(getSuperior() != null) { getSuperior().requestApplications(request); } } } }
//总经理 public class GeneralManager extends Manager { public GeneralManager(String name) { super(name); } @Override public void requestApplications(Request request) { if("请假".equals(request.getRequestType())) { System.out.println(name + ":" + request.getRequestContent() + "数量" + request.getNumber() + "被批准"); } else if("加薪".equalsIgnoreCase(request.getRequestType()) && request.getNumber() <= 500){ System.out.println(name + ":" + request.getRequestContent() + "数量" + request.getNumber() + "被批准"); } else if("加薪".equalsIgnoreCase(request.getRequestType()) && request.getNumber() > 500){ System.out.println(name + ":" + request.getRequestContent() + "数量" + request.getNumber() + "再说吧"); } } }
//总监 public class Majordomo extends Manager { public Majordomo(String name) { super(name); } @Override public void requestApplications(Request request) { if("请假".equals(request.getRequestType()) && request.getNumber() <= 5 ) { System.out.println(name + ":" + request.getRequestContent() + "数量" + request.getNumber() + "被批准"); } else { if(getSuperior() != null) { getSuperior().requestApplications(request); } } } }
public abstract class Manager { protected String name; public Manager(String name) { super(); this.name = name; } private Manager superior; public Manager getSuperior() { return superior; } public void setSuperior(Manager superior) { //关键的方法 this.superior = superior; } public abstract void requestApplications(Request request); }
public class Request { //申请类别 private String requestType; //申请内容 private String requestContent; //数量 private int number; public String getRequestType() { return requestType; } public void setRequestType(String requestType) { this.requestType = requestType; } public String getRequestContent() { return requestContent; } public void setRequestContent(String requestContent) { this.requestContent = requestContent; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } }
运行结果
相关文章推荐
- 大话设计模式1 简单工厂模式 的java代码实现
- 大话设计模式3 装饰模式 的java代码实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- Java实现责任链模式
- 大话设计模式之外观模式(Java版实现) 买股票还是买基金在此揭晓
- Java设计模式偷跑系列(十八)建模和责任链模式的实现
- 大话设计模式(java实现)
- 《大话设计模式》读书笔记,附Java代码实现
- 大话设计模式--java实现策略模式
- 设计模式--责任链模式--Java实现
- 《大话设计模式》java实现之装饰器模式
- 《大话设计模式》java实现之代理模式
- 《大话设计模式》java实现之工厂方法模式
- 大话设计模式之状态模式(java版实现)
- 大话设计模式5 工厂方法模式 的java代码实现
- 《大话设计模式》java实现之简单工厂模式
- 大话设计模式2 策略模式 的java代码实现
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 责任链模式(Chain of Responsibility) - Java实现
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 大话设计模式-简单工厂模式(学习笔记与java实现)