用请假的例子帮我写 一份代码
时间: 2024-02-15 10:05:08 浏览: 19
好的,以下是一个简单的请假处理的例子,假设我们需要处理员工的请假请求,根据请假天数的不同,需要由不同的领导级别进行审批:
```
// 请假请求类
class LeaveRequest {
private String name;
private int days;
public LeaveRequest(String name, int days) {
this.name = name;
this.days = days;
}
public String getName() {
return name;
}
public int getDays() {
return days;
}
}
// 抽象处理者类
abstract class Leader {
protected Leader successor; // 后继处理者
protected String name; // 处理者姓名
public Leader(String name) {
this.name = name;
}
public void setSuccessor(Leader successor) {
this.successor = successor;
}
public abstract void handleRequest(LeaveRequest request);
}
// 具体处理者类:主管
class Director extends Leader {
public Director(String name) {
super(name);
}
public void handleRequest(LeaveRequest request) {
if (request.getDays() <= 3) {
System.out.println(name + "审批员工" + request.getName() + "的请假申请,请假天数为" + request.getDays() + "天。");
} else {
if (successor != null) {
successor.handleRequest(request); // 转发请求给下一个处理者
}
}
}
}
// 具体处理者类:经理
class Manager extends Leader {
public Manager(String name) {
super(name);
}
public void handleRequest(LeaveRequest request) {
if (request.getDays() <= 7) {
System.out.println(name + "审批员工" + request.getName() + "的请假申请,请假天数为" + request.getDays() + "天。");
} else {
if (successor != null) {
successor.handleRequest(request); // 转发请求给下一个处理者
}
}
}
}
// 具体处理者类:总经理
class CEO extends Leader {
public CEO(String name) {
super(name);
}
public void handleRequest(LeaveRequest request) {
if (request.getDays() <= 10) {
System.out.println(name + "审批员工" + request.getName() + "的请假申请,请假天数为" + request.getDays() + "天。");
} else {
System.out.println("请假天数过长," + name + "无法处理该请求。");
}
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Leader director = new Director("张三");
Leader manager = new Manager("李四");
Leader ceo = new CEO("王五");
director.setSuccessor(manager);
manager.setSuccessor(ceo);
LeaveRequest request1 = new LeaveRequest("小明", 2);
director.handleRequest(request1);
LeaveRequest request2 = new LeaveRequest("小红", 5);
director.handleRequest(request2);
LeaveRequest request3 = new LeaveRequest("小刚", 12);
director.handleRequest(request3);
}
}
```
在上面的代码中,我们定义了一个LeaveRequest类来表示请假请求,抽象处理者类Leader包含一个指向下一个处理者的引用successor,并且定义了一个抽象的handleRequest方法,具体的处理者类Director、Manager和CEO继承自Leader类,并实现自己的handleRequest方法。当一个请假请求到来时,首先会由Director对象尝试处理,如果请假天数在3天以内,则可以直接由Director审批通过;否则需要转发给Manager处理,如果请假天数在7天以内,则可以由Manager审批通过;否则需要转发给CEO处理,如果请假天数在10天以内,则可以由CEO审批通过;否则该请求就会被拒绝。客户端代码中,我们首先创建了三个具体的处理者对象Director、Manager和CEO,并且将它们按照顺序组合成了一个处理链。最后,我们创建了三个不同的请假请求,并分别向Director对象发送了这些请求,可以看到只有第一个请求被Director审批通过,第二个请求被Manager审批通过,第三个请求被CEO拒绝了。