1.请求类:
class ReimbursementRequest {
private String employeeName;
private double amount;
public ReimbursementRequest(String employeeName, double amount) {
this.employeeName = employeeName;
this.amount = amount;
}
public String getEmployeeName() {
return employeeName;
}
public double getAmount() {
return amount;
}
}
2.处理接口:
interface ApprovalHandler {
void handleRequest(ReimbursementRequest request);
void setNextHandler(ApprovalHandler handler);
}
3.具体处理器实现类-主管,CFO:
class Director implements ApprovalHandler {
private ApprovalHandler nextHandler;
@Override
public void handleRequest(ReimbursementRequest request) {
if (request.getAmount() <= 5000) {
System.out.println("Director approved the reimbursement request for " + request.getEmployeeName());
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
}
}
@Override
public void setNextHandler(ApprovalHandler handler) {
this.nextHandler = handler;
}
}
class CFO implements ApprovalHandler {
private ApprovalHandler nextHandler;
@Override
public void handleRequest(ReimbursementRequest request) {
if (request.getAmount() > 5000) {
System.out.println("CFO approved the reimbursement request for " + request.getEmployeeName());
} else {
System.out.println("Request denied for " + request.getEmployeeName());
}
}
@Override
public void setNextHandler(ApprovalHandler handler) {
this.nextHandler = handler;
}
}
4.主程序类:
public class ReimbursementApprovalSystem {
public static void main(String[] args) {
ApprovalHandler manager = new Manager();
ApprovalHandler director = new Director();
ApprovalHandler cfo = new CFO();
manager.setNextHandler(director);
director.setNextHandler(cfo);
ReimbursementRequest request1 = new ReimbursementRequest("Alice", 800);
manager.handleRequest(request1);
ReimbursementRequest request2 = new ReimbursementRequest("Bob", 4500);
manager.handleRequest(request2);
ReimbursementRequest request3 = new ReimbursementRequest("Charlie", 10000);
manager.handleRequest(request3);
}
}