《大话设计模式》java实现之责任链模式
来源:互联网 发布:四十而知天命 编辑:程序博客网 时间:2024/06/17 16:06
责任链模式各个对象的下一个处理对象在客户端指定,可以自由组合,灵活性强,状态模式各状态则是在编译时设置,即在各状态对象中指定,可对比struts的filter。
另外,书中变量的命名如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; }}
运行结果
阅读全文
0 0
- 《大话设计模式》java实现之责任链模式
- 大话设计模式_责任链模式
- 大话设计模式 责任链模式
- 大话设计模式—责任链模式
- 设计模式--责任链模式--Java实现
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java 设计模式之责任链模式
- Java设计模式之责任链模式
- 《Java设计模式》之责任链模式
- 《Java设计模式 》之责任链模式
- JAVA设计模式之:责任链模式
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- 《java设计模式》之责任链模式
- java设计模式之责任链模式
- 锤子科技犯过的构图错误你一定也犯过
- 简介
- 程序员必会十大算法及讲解
- WPF 添加winform控件,不支持右键菜单的解决方法
- 如何设置一个严格30分钟过期的Session
- 《大话设计模式》java实现之责任链模式
- 软件测试计划
- MySQL多实例配置
- Kafka设计解析(二)- Kafka High Availability (上)
- StreamToString工具类
- 物理层
- 18.开源项目--恢复隐藏的历史
- PHP对象在内存中的分配
- BCG、阿里研究院等联合报告:中国互联网经济的3大特色和5大“迷思”