职责链模式-B
来源:互联网 发布:国民党抗战电影 知乎 编辑:程序博客网 时间:2024/05/20 16:41
职责链模式实践
背景:
某公司内部规定,经理负责请假事务,员工最多可以请假3天;总监负责加薪事务,员工加薪不超过1000;现在某员工需要请假、加薪,通过职责链实现。
UML
代码
Request
package weic.om;public class Request{//申请类别--请假-加薪private String Type;//申请内容private String content;//申请数量private int numbers;public String getType(){return Type;}public void setType(String type){Type = type;}public String getContent(){return content;}public void setContent(String content){this.content = content;}public int getNumbers(){return numbers;}public void setNumbers(int numbers){this.numbers = numbers;}}
Manager
package weic.om;public class Manager{//管理者名字protected String name;public Manager(String name){this.name = name;}//设置上级---链protected Manager Superior;public void setSuperior(Manager Superior){this.Superior = Superior;}//申请请求处理public void RequestApplications(Request request){}}
Commonmanager
package weic.om;//经理public class Commonmanager extends Manager{public Commonmanager(String name){super(name);}//申请请求处理//经理处理---请假 数目<2public void RequestApplications(Request request){if(request.getType().equals("请假") && request.getNumbers()<=3){System.out.println(this.name+": "+request.getContent()+request.getNumbers()+"天"+" 被批准");}else if(request.getType().equals("请假") && request.getNumbers()>3){System.out.println(this.name+": "+request.getContent()+request.getNumbers()+"天"+" 不批准");}else if (Superior != null) {Superior.RequestApplications(request);}}}
Majordomo
package weic.om;//总监public class Majordomo extends Manager {public Majordomo(String name){super(name);}//申请请求处理//总监处理---请假 数目>5 + 加薪<1000 public void RequestApplications(Request request){if(request.getType().equals("加薪") && request.getNumbers()<1000 ){System.out.println(this.name+": "+request.getContent()+" 涨薪"+request.getNumbers()+" 被批准");}else if(request.getType().equals("加薪")){System.out.println(this.name+": "+request.getContent()+" 涨薪"+request.getNumbers()+" 以后再说");}else {System.out.println(this.name+": "+request.getContent()+" 数目"+request.getNumbers()+" 这事我做不了主");}}}Client
package weic.om;public class Client{public static void main(String[] args){//级别从低到高 经理->总监Manager jinli = new Commonmanager("金立");Manager zongjian = new Majordomo("宗间");jinli.setSuperior(zongjian);//设置链Request request1 = new Request();request1.setType("请假");request1.setContent("张三请假");request1.setNumbers(1);jinli.RequestApplications(request1);Request request2 = new Request();request2.setType("请假");request2.setContent("李四请假");request2.setNumbers(3);jinli.RequestApplications(request2);Request request3 = new Request();request3.setType("加薪");request3.setContent("王五想加薪");request3.setNumbers(3000);jinli.RequestApplications(request3);Request request4 = new Request();request4.setType("晋升");request4.setContent("sun想晋升");request4.setNumbers(1);jinli.RequestApplications(request4);}}
结果:
0 0
- 职责链模式-B
- 职责链设计模式
- 职责链模式
- 职责链模式
- 职责链模式
- ChainOfResponsibility(职责链)模式
- 职责链模式ChainOfResponsibility
- 职责链模式
- 职责链模式 ResponsibilityChainPattern
- 【设计模式】职责链
- 职责链模式
- java职责链模式
- 职责链模式
- 职责链模式
- 职责链模式(python)
- 职责链模式
- 职责链模式
- 职责链模式
- Lake Counting DFS水题
- LINUX内核经典面试题
- ETL
- spring整合struts2(hibernate的配置和spring配置文件综合在一起)
- "undefined reference to" 问题解决方法
- 职责链模式-B
- String类的详细解析
- hibernate映射关系之一对多
- 下三角形的一些思考
- 阿里共享业务事业部第一次电面
- applicationContext.xml 配置说明
- 黑马程序员_对象包装器、枚举类
- 深入理解gtest C/C++单元测试经验谈
- 【总结】IE和Firefox的Javascript兼容性总结