责任链模式
来源:互联网 发布:mac里的照片如何导出 编辑:程序博客网 时间:2024/06/05 00:37
package ChainOfResponsibility;/*** * 封装请假基本信息 * * @author zw * */public class LeaveRequest {private String empName;private int leaveDays;private String reason;public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}public int getLeaveDays() {return leaveDays;}public void setLeaveDays(int leaveDays) {this.leaveDays = leaveDays;}public String getReason() {return reason;}public void setReason(String reason) {this.reason = reason;}public LeaveRequest(String empName, int leaveDays, String reason) {super();this.empName = empName;this.leaveDays = leaveDays;this.reason = reason;}public LeaveRequest() {super();}}
package ChainOfResponsibility;/*** * 抽象类 */public abstract class Leader {protected String name;protected Leader nextLeader;//责任链上的后继对象public Leader(String name) {super();this.name = name;}//设定责任链上的后继对象public void setNextLeader(Leader nextLeader) {this.nextLeader = nextLeader;}/*** * 处理请求的核心业务方法 * @param request */public abstract void handleRequest(LeaveRequest request);}
package ChainOfResponsibility;/*** * 主任 * @author zw * */public class Director extends Leader{public Director(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void handleRequest(LeaveRequest request) {if(request.getLeaveDays()<3) {System.out.println("员工:"+request.getEmpName()+",请假:"+request.getLeaveDays()+"天,理由是:"+request.getReason());System.out.println("主任:"+this.name+",审批通过!");}else {if(this.nextLeader!=null) {//下一个不为空,就交给下一个处理this.nextLeader.handleRequest(request);}}}}
package ChainOfResponsibility;/*** * 经理 * @author zw * */public class Manager extends Leader{public Manager(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void handleRequest(LeaveRequest request) {if(request.getLeaveDays()<10) {System.out.println("员工:"+request.getEmpName()+",请假:"+request.getLeaveDays()+"天,理由是:"+request.getReason());System.out.println("经理:"+this.name+",审批通过!");}else {if(this.nextLeader!=null) {//下一个不为空,就交给下一个处理this.nextLeader.handleRequest(request);}}}}
package ChainOfResponsibility;/*** * 总经理 * @author zw * */public class GeneralManager extends Leader{public GeneralManager(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void handleRequest(LeaveRequest request) {if(request.getLeaveDays()<30) {System.out.println("员工:"+request.getEmpName()+",请假:"+request.getLeaveDays()+"天,理由是:"+request.getReason());System.out.println("总经理:"+this.name+",审批通过!");}else {System.out.println("大于三十天不通过,该员工有异常表现!");}}}
package ChainOfResponsibility;public class Client {public static void main(String[] args) {Leader a = new Director("张三");Leader b = new Manager("李四");Leader c = new GeneralManager("王五");//设置责任链的下一个对象a.setNextLeader(b);b.setNextLeader(c);//请假操作LeaveRequest r1 = new LeaveRequest("张华", 50, "回老家探亲!");a.handleRequest(r1);}}
阅读全文
0 0
- 责任链模式
- 深入浅出责任链模式
- 责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式(一)
- 责任链模式(二)
- 责任链模式(三)
- 责任链模式
- java责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- c++ 责任链模式
- java责任链模式
- 责任链模式
- there is a reason
- android6.0 属性
- Android studio中NDK开发(一):CMakeLists.txt编写入门
- uva 10305 拓扑排序
- git第一次碰到冲突
- 责任链模式
- 最小回文串划分
- Ubuntu从9.10升级到14.10(64位)后编译Linux内核遇到的系列问题解决方法
- Matlab中变量的动态定义
- Unity入门操作_025_01
- 你真的会用面包屑导航吗?
- dubbo
- matlab2c使用c++实现matlab函数系列教程-sort函数
- Ubuntu下,Nginx普通安装后想要加入ssl支持model