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