用java代码实现在一个类里面:5员工请假,请假一天需要组长审批,请假三天需要经理审批,请假七天需要老板审 批,每个角色可以审批的天数不同,当无权限审批时则转给上级领导。请尝试用责 任链模式模拟该应用。
时间: 2024-03-01 17:54:38 浏览: 25
好的,我尝试回答你的问题。
首先,需要创建一个抽象类 LeaveHandler,它有两个属性:name表示处理者的名称,next表示下一个处理者。
```java
public abstract class LeaveHandler {
protected String name;
protected LeaveHandler next;
public LeaveHandler(String name) {
this.name = name;
}
public void setNext(LeaveHandler next) {
this.next = next;
}
public abstract void handleRequest(LeaveRequest request);
}
```
然后,需要创建具体的处理者类,分别是组长(Leader)、经理(Manager)和老板(Boss)。每个处理者都有自己的处理能力和审批天数限制。
```java
public class Leader extends LeaveHandler {
private static final int MAX_DAY = 1;
public Leader(String name) {
super(name);
}
@Override
public void handleRequest(LeaveRequest request) {
if (request.getLeaveDays() <= MAX_DAY) {
System.out.println("组长" + name + "审批" + request.getLeaveDays() + "天假期。");
} else {
next.handleRequest(request);
}
}
}
public class Manager extends LeaveHandler {
private static final int MAX_DAY = 3;
public Manager(String name) {
super(name);
}
@Override
public void handleRequest(LeaveRequest request) {
if (request.getLeaveDays() <= MAX_DAY) {
System.out.println("经理" + name + "审批" + request.getLeaveDays() + "天假期。");
} else {
next.handleRequest(request);
}
}
}
public class Boss extends LeaveHandler {
private static final int MAX_DAY = 7;
public Boss(String name) {
super(name);
}
@Override
public void handleRequest(LeaveRequest request) {
if (request.getLeaveDays() <= MAX_DAY) {
System.out.println("老板" + name + "审批" + request.getLeaveDays() + "天假期。");
} else {
System.out.println("假期天数太长,无法批准。");
}
}
}
```
最后,需要创建一个 LeaveRequest 类,它表示请假请求。它有两个属性:name表示员工名称,leaveDays表示请假天数。
```java
public class LeaveRequest {
private String name;
private int leaveDays;
public LeaveRequest(String name, int leaveDays) {
this.name = name;
this.leaveDays = leaveDays;
}
public String getName() {
return name;
}
public int getLeaveDays() {
return leaveDays;
}
}
```
现在可以在主函数中构造责任链,然后将请假请求传递给第一个处理者(组长)。
```java
public class Main {
public static void main(String[] args) {
// 构造责任链
LeaveHandler leader = new Leader("张三");
LeaveHandler manager = new Manager("李四");
LeaveHandler boss = new Boss("王五");
leader.setNext(manager);
manager.setNext(boss);
// 提交请假请求
LeaveRequest request1 = new LeaveRequest("小明", 1);
LeaveRequest request2 = new LeaveRequest("小红", 3);
LeaveRequest request3 = new LeaveRequest("小刚", 5);
LeaveRequest request4 = new LeaveRequest("小李", 8);
leader.handleRequest(request1);
leader.handleRequest(request2);
leader.handleRequest(request3);
leader.handleRequest(request4);
}
}
```
输出结果为:
```
组长张三审批1天假期。
经理李四审批3天假期。
老板王五审批5天假期。
假期天数太长,无法批准。
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)