successor

更新时间:2022-11-24 08:05:24 阅读: 评论:0


2022年11月24日发(作者:轻浮)

实验(上机)十责任链模式

实验(上机)目的

1、练习使用行为型设计模式;

2、练习使用责任链模式的设计思路;

3、练习使用责任链模式实现“业务审批流程”案例的实现。

实验(上机)课时

2学时

实验(上机)环境

JDK1.8EclipMars

预备知识

1、行为型模式;

2、职责链模式概述;

3、职责链模式的结构与实现;

4、职责链模式的应用实例;

5、纯与不纯的职责链模式;

6、职责链模式的优缺点与适用环境。

实验(上机)内容

某企业的SCM(SupplyChainManagement,供应链管理)系统中包含一个

采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由

不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采

购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事

长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的

采购单就需要开董事会讨论决定。如下图所示:

采购人员

采购单

主任

副董事长董事长

董事会

金额<5万元

5万元≤金额<10万元

10万元≤金额<50万元

金额≥50万元

采购单分级审批示意图

现使用职责链模式设计并实现该系统。

新建解决方案,新建一个控制台应用程序,编写责任模式实现代码,实现

以上需求的案例,要求编写为控制台应用程序,并能调试运行。

实验(上机)步骤

1、本实例类图:

successor

Approver

{abstract}

##successor

name

:Approver

:string

+

+

+

Approver(stringname)

SetSuccessor(Approversuccessor)

ProcessRequest(PurchaRequestrequest)

...

:void

:void

Director

+

+

Director(stringname)

ProcessRequest(PurchaRequestrequest)

...

:void

Congress

+

+

Congress(stringname)

ProcessRequest(PurchaRequestrequest)

...

:void

PurchaRequest

-

-

-

+

+

+

<>

<>

<>

<>

<>

<>

amount

number

purpo

Amount

Number

Purpo

:double

:int

:string

:double

:int

:string

+

+

+

+

+

+

+

<>

<>

<>

<>

<>

<>

PurchaRequest(doubleamount,

intnumber,stringpurpo)

t_Amount(doublevalue)

get_Amount()

t_Number(intvalue)

get_Number()

t_Purpo(stringvalue)

get_Purpo()

...

:void

:double

:void

:int

:void

:string

VicePresident

+

+

VicePresident(stringname)

ProcessRequest(PurchaRequestrequest)

...

:void

President

+

+

President(stringname)

ProcessRequest(PurchaRequestrequest)

...

:void

2、创建ChainOfResponsibility的工程,并根据模式的角色创建对应的包。

3、创建PurchaRequest采购单类,充当请求类

packageApplication;

publicclassPurchaRequest{

//采购金额

privatedoubleamount;

//采购单编号

privateintnumber;

//采购目的

privateStringpurpo;

publicPurchaRequest(doubleamount,intnumber,Stringpurpo)

{

=amount;

=number;

e=purpo;

}

publicdoublegetAmount(){

returnamount;

}

publicvoidtAmount(doubleamount){

=amount;

}

publicintgetNumber(){

returnnumber;

}

publicvoidtNumber(intnumber){

=number;

}

publicStringgetPurpo(){

returnpurpo;

}

publicvoidtPurpo(Stringpurpo){

e=purpo;

}

}

4、创建Approver审批者类,充当抽象处理者

packageHandler;

Request;

publicabstractclassApprover{

//定义后继对象

protectedApproversuccessor;

//审批者姓名

protectedStringname;

publicApprover(Stringname){

=name;

}

//设置后继者

publicvoidSetSuccessor(Approversuccessor){

sor=successor;

}

//抽象请求处理方法

publicabstractvoidProcessRequest(PurchaRequestrequest);

}

5、创建Director主任类,充当具体处理者

packageConcreteHandler;

Request;

er;

publicclassDirectorextendsApprover{

publicDirector(Stringname){

super(name);

}

publicvoidProcessRequest(PurchaRequestrequest){

if(unt()<50000){

//处理请求

("主任"+name+"审批采购单:"+

ber());

(",金额:"+unt()+"元,");

n("采购目的:"+po()+"。

");

}el{

//转发请求

sRequest(request);

}

}

}

6、创建VicePresident副董事长类,充当具体处理者

packageConcreteHandler;

Request;

er;

publicclassVicePresidentextendsApprover{

publicVicePresident(Stringname){

super(name);

}

publicvoidProcessRequest(PurchaRequestrequest){

if(unt()<100000){

//处理请求

("副董事长"+name+"审批采购单:"+

ber());

(",金额:"+unt()+"元,");

n("采购目的:"+po()+"。

");

}el{

//转发请求

sRequest(request);

}

}

}

7、创建President董事长类,充当具体处理者

packageConcreteHandler;

Request;

er;

publicclassPresidentextendsApprover{

publicPresident(Stringname){

super(name);

}

publicvoidProcessRequest(PurchaRequestrequest){

if(unt()<500000){

//处理请求

("董事长"+name+"审批采购单:"+

ber());

(",金额:"+unt()+"元,");

n("采购目的:"+po()+"。

");

}el{

//转发请求

sRequest(request);

}

}

}

8、Congress:董事会类,充当具体处理者

packageConcreteHandler;

Request;

er;

publicclassCongresxtendsApprover{

publicCongress(Stringname){

super(name);

}

publicvoidProcessRequest(PurchaRequestrequest){

//处理请求

("召开董事会审批采购单:"+ber());

(",金额:"+unt()+"元,");

n("采购目的:"+po()+"。");

}

}

9、Program:客户端测试类

packageTest;

Request;

ss;

or;

ent;

esident;

er;

publicclassClient{

publicstaticvoidmain(String[]args){

Approverwjzhang=newDirector("张无忌");

Approvergyang=newVicePresident("杨过");

Approverjguo=newPresident("郭靖");

Approvermeeting=newCongress("董事会");

//创建职责链

cessor(gyang);

cessor(jguo);

cessor(meeting);

//创建采购单

PurchaRequestpr1=newPurchaRequest(45000,10001,"购买倚天

剑");

sRequest(pr1);

PurchaRequestpr2=newPurchaRequest(60000,10002,"购买大金

雕");

sRequest(pr2);

PurchaRequestpr3=newPurchaRequest(160000,10003,"购买《降

龙十八掌》");

sRequest(pr3);

PurchaRequestpr4=newPurchaRequest(800000,10004,"购买桃

花岛");

sRequest(pr4);

}

}

10、结果及分析,编译并运行程序,输出结果如下:

结束

考核内容

1、上交各自建立的电子版解决方案及项目。

2、用EA建模工具编制以上类图。

3、上交实验报告。

本文发布于:2022-11-24 08:05:24,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/10474.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:漫画书的英文
标签:successor
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图