假条(职责链模式实战)"/>
审批假条(职责链模式实战)
某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。
类图:
代码:
抽象处理者Leader类:
public abstract class Leader
{protected String name;protected Leader successor;public Leader(String name){this.name=name;}public void setSuccessor(Leader successor){this.successor=successor;}public abstract void handleRequest(Request request);
}
具体处理者:
1.Director(主任)类:
public class Director extends Leader{public Director(String name) {super(name);}@Overridepublic void handleRequest(Request request) {if(request.getDay()<3){System.out.println(name+"批准"+request.getName()+request.getDay()+"天的假");}else{this.successor.handleRequest(request);}}
}
2.Manager(经理)类:
public class Manager extends Leader{public Manager(String name) {super(name);}@Overridepublic void handleRequest(Request request) {if(request.getDay()>=3 && request.getDay()<10){System.out.println(name+"批准"+request.getName()+request.getDay()+"天的假");}else{this.successor.handleRequest(request);}}
}
3.GeManage(总经理)类:
public class GeManager extends Leader{public GeManager(String name) {super(name);}@Overridepublic void handleRequest(Request request) {if(request.getDay()>=10 && request.getDay()<30){System.out.println(name+"批准"+request.getName()+request.getDay()+"天的假");}else{System.out.println(request.getName()+"想要请"+request.getDay()+"天的假,不给批准!");}}
}
Request类:
public class Request {public String name;public int day;public Request(String name, int day) {this.name = name;this.day = day;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getDay() {return day;}public void setDay(int day) {this.day = day;}
}
Client(客户)类:
public class Client {public static void main(String[] args) {Leader director,manager,gemanager;Request r1,r2,r3,r4;director =new Director("张主任");manager=new Manager("李经理");gemanager=new GeManager("王总经理");director.setSuccessor(manager);manager.setSuccessor(gemanager);r1=new Request("张三",2);r2=new Request("李四",5);r3=new Request("王五",20);r4=new Request("小明",40);director.handleRequest(r1);director.handleRequest(r2);director.handleRequest(r3);director.handleRequest(r4);}}
运行结果截图:
求关注,求关注,求关注!!!
可以直接问我要代码
更多推荐
审批假条(职责链模式实战)
发布评论