package com.coderbean.chainOfResp;
/**
* Created by Chang on 15/10/3.
*/publicclassDirectorextendsLeader {publicDirector(String name) {
super(name);
}
@OverridepublicvoidhandleRequest(LeaveRequest request) {
if(request.getLeaveDays()<3){
System.out.println("员工"+request.getName()+"请假"+request.getLeaveDays()+"天");
System.out.println("主任:审批通过");
}else{
if(this.nextLeader!=null){
this.nextLeader.handleRequest(request);
}
}
}
}
Manager
package com.coderbean.chainOfResp;
/**
* Created by Chang on 15/10/3.
*/publicclassManagerextendsLeader {publicManager(String name) {
super(name);
}
@OverridepublicvoidhandleRequest(LeaveRequest request) {
if(request.getLeaveDays()<10){
System.out.println("员工"+request.getName()+"请假"+request.getLeaveDays()+"天");
System.out.println("经理:审批通过");
}else{
if(this.nextLeader!=null){
this.nextLeader.handleRequest(request);
}
}
}
}
GeneralManager
package com.coderbean.chainOfResp;
/**
* Created by Chang on 15/10/3.
*/publicclassGeneralManagerextendsLeader {publicGeneralManager(String name) {
super(name);
}
@OverridepublicvoidhandleRequest(LeaveRequest request) {
if(request.getLeaveDays()<30){
System.out.println("员工"+request.getName()+"请假"+request.getLeaveDays()+"天");
System.out.println("总经理:审批通过");
}else{
System.out.println("莫非"+request.getName()+"想辞职,居然请假"+request.getLeaveDays()+"天");
}
}
}
Client
package com.coderbean.chainOfResp;
/**
* Created by Chang on 15/10/3.
*/publicclassClient {publicstaticvoidmain(String[] args) {
Leader a = new Director("张三");
Leader b = new Manager("李四");
Leader c = new GeneralManager("王五");
a.setNextLeader(b);
b.setNextLeader(c);
LeaveRequest request = new LeaveRequest("TOM",100,"会英国老家探亲");
a.handleRequest(request);
}
}