【说明】
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。
采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图7-1所示。
【Java 代码】
class PurchaseRequest
public double Amount; // 一个采购的金额
public int Number; // 采购单编号
public String Purpose; // 采购目的
;
class Approver // 审批者类
public Approver() successor = null;
public void ProcessRequest(PurchaseRequest aRequest)
if (successor != null) successor. (1) ;
public void SetSuccesser(Approver aSuccesssor) successor = aSuccesssor;
private (2) successor;
;
class Congress extends Approver
public void ProcessRequest(PurchaseRequest aRequest)
if(aRequest,Amount >= 500000) // 决定是否审批的代码省略
else (3) .ProcessRequest(aRequest);
;
class Director extends Approver
public void ProcessRequest(PurchaseRequest aRequest) // 此处代码省略
;
class President extends Approver
public void ProcessRequest(PurchaseRequest aRequest) // 此处代码省略
;
class VicePresident extends Approver
public void ProcessRequest(PurchaseRequest aRequest) // 此处代码省略
;
public class rs
public static void main(String[] args) throws IOException
Congress Meeting = new Congress();
VicePresident Sam = new VicePresident();
Director Larry = new Director();
President Tammy = new President();
// 构造责任链
Meeting. SetSuccessor(null); Sam. SetSuccessor( (4) );
Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) );
//构造一采购审批请求
PurchaseRequest aRequest = new PurchaseRequest();
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
aRequest.Amount = Double.parseDouble(br.readLine());
(7) .ProcessRequest(aRequest); // 开始审批
return ;
}
依次填入程序中(1)~(7)处中。