员工请假一天需要组长审批请假三天需要经理审批,请假七天需要老板审批,无权审批时转交给上级领导,请使用java设计模式责任链模式编写
时间: 2024-03-01 16:52:48 浏览: 65
好的,以下是使用Java设计模式责任链模式实现员工请假审批的示例代码:
首先,需要定义一个抽象类LeaveRequestHandler,作为处理请假请求的抽象类,其中包含一个抽象方法handleRequest(LeaveRequest leaveRequest),用于处理请假请求,并且还包含一个LeaveRequestHandler类型的successor,用于指定下一个处理请求的处理者。
```java
public abstract class LeaveRequestHandler {
protected LeaveRequestHandler successor;
public void setSuccessor(LeaveRequestHandler successor) {
this.successor = successor;
}
public abstract void handleRequest(LeaveRequest leaveRequest);
}
```
接下来,需要定义具体的请假请求处理者,包括组长、经理和老板,这里以组长为例,其他处理者类似。组长需要审批一天以内的请假请求,如果请假时间超过一天,需要将请求转交给下一个处理者。组长类的示例代码如下:
```java
public class GroupLeaderHandler extends LeaveRequestHandler {
@Override
public void handleRequest(LeaveRequest leaveRequest) {
if (leaveRequest.getDays() <= 1) {
System.out.println("Group Leader approved the leave request for " + leaveRequest.getDays() + " day(s).");
} else {
if (successor != null) {
successor.handleRequest(leaveRequest);
}
}
}
}
```
同样地,经理和老板也需要自己实现handleRequest方法,分别审批1-3天和3-7天的请假请求,如果请假时间超过自己能审批的范围,需要将请求转交给下一个处理者或者结束审批流程。
最后,需要编写一个测试类,创建请假请求和处理者对象,并将它们连接起来,形成责任链。示例代码如下:
```java
public class LeaveRequestTest {
public static void main(String[] args) {
LeaveRequest leaveRequest = new LeaveRequest("Tom", 2);
GroupLeaderHandler groupLeaderHandler = new GroupLeaderHandler();
ManagerHandler managerHandler = new ManagerHandler();
BossHandler bossHandler = new BossHandler();
groupLeaderHandler.setSuccessor(managerHandler);
managerHandler.setSuccessor(bossHandler);
groupLeaderHandler.handleRequest(leaveRequest);
}
}
```
在这个例子中,Tom申请了两天的请假,程序会先将请求交给组长处理,由于请假时间超过了一天,组长就会将请求转交给经理处理,经理再将请求转交给老板处理,最终老板审批通过了Tom的请假请求。
阅读全文