24.11.18
[实验任务一]:财务审批
某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。
实验要求:
-
提交类图;
-
提交源代码;
package org.test.ruanjiansheji.zhizelian;
// 抽象审批人类
abstract class Approver {
protected Approver nextApprover;
// 设置下一个审批人
public void setNextApprover(Approver nextApprover) {
this.nextApprover = nextApprover;
}
// 处理采购请求的方法
public abstract void handleRequest(PurchaseRequest request);
}
// 采购请求类
class PurchaseRequest {
private double amount;
private String description;
public PurchaseRequest(double amount, String description) {
this.amount = amount;
this.description = description;
}
public double getAmount() {
return amount;
}
public String getDescription() {
return description;
}
}
// 主任审批人
class Director extends Approver {
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getAmount() <= 10000) {
System.out.println("主任审批通过采购单,金额:" + request.getAmount());
} else if (nextApprover != null) {
nextApprover.handleRequest(request);
}
}
}
// 部门经理审批人
class Manager extends Approver {
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getAmount() <= 50000) {
System.out.println("部门经理审批通过采购单,金额:" + request.getAmount());
} else if (nextApprover != null) {
nextApprover.handleRequest(request);
}
}
}
// 副总经理审批人
class VicePresident extends Approver {
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getAmount() <= 100000) {
System.out.println("副总经理审批通过采购单,金额:" + request.getAmount());
} else if (nextApprover != null) {
nextApprover.handleRequest(request);
}
}
}
// 总经理审批人
class GeneralManager extends Approver {
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getAmount() <= 200000) {
System.out.println("总经理审批通过采购单,金额:" + request.getAmount());
} else if (nextApprover != null) {
nextApprover.handleRequest(request);
}
}
}
// 职工大会审批人
class StaffMeeting extends Approver {
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getAmount() > 200000) {
System.out.println("采购单金额超过20万元,需开职工大会审批,金额:" + request.getAmount());
} else if (nextApprover != null) {
nextApprover.handleRequest(request);
}
}
}
// 客户端类
public class Client {
public static void main(String[] args) {
// 创建各级审批人
Approver director = new Director();
Approver manager = new Manager();
Approver vicePresident = new VicePresident();
Approver generalManager = new GeneralManager();
Approver staffMeeting = new StaffMeeting();
// 设置职责链
director.setNextApprover(manager);
manager.setNextApprover(vicePresident);
vicePresident.setNextApprover(generalManager);
generalManager.setNextApprover(staffMeeting);
// 创建采购请求
PurchaseRequest request1 = new PurchaseRequest(8000, "采购办公用品");
PurchaseRequest request2 = new PurchaseRequest(30000, "采购电脑");
PurchaseRequest request3 = new PurchaseRequest(150000, "采购新设备");
PurchaseRequest request4 = new PurchaseRequest(250000, "采购原料");
// 发起请求
System.out.println("处理采购单1:");
director.handleRequest(request1);
System.out.println("\n处理采购单2:");
director.handleRequest(request2);
System.out.println("\n处理采购单3:");
director.handleRequest(request3);
System.out.println("\n处理采购单4:");
director.handleRequest(request4);
}
}
- 注意编程规范。