public class Client {
public static void main(String[] args) {
Leader objDirector, objManager, objGeneralManager, objViceGeneralManager;
objDirector = new Director("王明");
objManager = new Manager("赵强");
objGeneralManager = new GeneralManager("李波");
objViceGeneralManager = new ViceGeneralManager("肖红");
objDirector.setSuccessor(objManager);
objManager.setSuccessor(objViceGeneralManager);
objViceGeneralManager.setSuccessor(objGeneralManager);
PurchaseRequest lr1 = new PurchaseRequest("张三", 50000);
objDirector.handleRequest(lr1);
}
}
public class PurchaseRequest {
private String purchaseName;
private int purchaseMoney;
public PurchaseRequest(String purchaseName, int purchaseMoney) {
this.purchaseName = purchaseName;
this.purchaseMoney = purchaseMoney;
}
public void setPurchaseName(String purchaseName) {
this.purchaseName = purchaseName;
}
public void setPurchaseMoney(int purchaseMoney) {
this.purchaseMoney = purchaseMoney;
}
public String getPurchaseName() {
return purchaseName;
}
public int getPurchaseMoney() {
return purchaseMoney;
}
}
public abstract class Leader {
protected String name;
protected Leader successor;
public Leader(String name) {
this.name = name;
}
public void setSuccessor(Leader successor) {
this.successor = successor;
}
public abstract void handleRequest(PurchaseRequest request);
}
public class Director extends Leader {
public Director(String name) {
super(name);
}
public void handleRequest(PurchaseRequest request) {
if (request.getPurchaseMoney() <= 10000) {
System.out.println("主任" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
} else {
if (this.successor != null) {
this.successor.handleRequest(request);
}
}
}
}
public class Manager extends Leader {
public Manager(String name) {
super(name);
}
public void handleRequest(PurchaseRequest request) {
if (request.getPurchaseMoney() <= 50000) {
System.out.println("经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
} else {
if (this.successor != null) {
this.successor.handleRequest(request);
}
}
}
}
public class ViceGeneralManager extends Leader {
public ViceGeneralManager(String name) {
super(name);
}
public void handleRequest(PurchaseRequest request) {
if (request.getPurchaseMoney() <= 100000) {
System.out.println("副总经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
} else {
if (this.successor != null) {
this.successor.handleRequest(request);
}
}
}
}
public class GeneralManager extends Leader {
public GeneralManager(String name) {
super(name);
}
public void handleRequest(PurchaseRequest request) {
if (request.getPurchaseMoney() <= 200000) {
System.out.println("总经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
} else {
System.out.println("数额太大,需要开会讨论");
}
}
}