package com.yf.chainModel;
public abstract class LeaveHandler {
protected LeaveHandler successor;
public void setSuccessor(LeaveHandler successor){
this.successor=successor;
}
public abstract void disposeLeave(int day);
}
package com.yf.chainModel;
public class Lead extends LeaveHandler{
@Override
public void disposeLeave(int day) {
if(day<=1){
System.out.print("i can handle"+day);
}else{
successor.disposeLeave(day);
}
}
}
package com.yf.chainModel;
public class HrBoss extends LeaveHandler{
@Override
public void disposeLeave(int day) {
if(day<=5){
System.out.print("i can handle"+day);
}else{
successor.disposeLeave(day);
}
}
}
package com.yf.chainModel;
public class CTO extends LeaveHandler{
@Override
public void disposeLeave(int day) {
if(day<=3){
System.out.print("i can handle"+day);
}else{
successor.disposeLeave(day);
}
}
}
package com.yf.chainModel;
public class CEO extends LeaveHandler{
@Override
public void disposeLeave(int day) {
System.out.print("i can handle"+day);
}
}
package com.yf.chainModel;
public class LeaveHandlerFactory {
public static LeaveHandler createHandler(){
LeaveHandler lead=new Lead();
LeaveHandler cto=new CTO();
LeaveHandler hrBoss=new HrBoss();
LeaveHandler ceo=new CEO();
lead.setSuccessor(cto);
cto.setSuccessor(hrBoss);
hrBoss.setSuccessor(ceo);
return lead;
}
}
package com.yf.chainModel;
public class testMain {
public static void main(String[] args){
LeaveHandler handler=LeaveHandlerFactory.createHandler();
handler.disposeLeave(10);
}
}