软件设计模式(JAVA) 10_责任链模式_实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

实验(上机)目的

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

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

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

实验(上机)课时

2学时

实验(上机)环境

JDK1.8\Eclipse Mars

预备知识

1、行为型模式;

2、职责链模式概述;

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

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

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

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

实验(上机)内容

某企业的SCM(Supply Chain Management,供应链管理)系统中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。如下图所示:

采购单分级审批示意图

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

新建解决方案,新建一个控制台应用程序,编写责任模式实现代码,实现以上需求的案例,要求编写为控制台应用程序,并能调试运行。

实验(上机)步骤

1、本实例类图:

successor

Approver

{abstract}

#

#

successor

name

: Approver

: string

+

+

+

Approver (string name)

SetSuccessor (Approver successor)

ProcessRequest (PurchaseRequest request)

...

: void

: void

Director

+

+

Director (string name)

ProcessRequest (PurchaseRequest request)

...

: void

Congress

+

+

Congress (string name)

ProcessRequest (PurchaseRequest request)

...

: void PurchaseRequest

-

-

-

+

+

+

<>

<>

<>

<>

<>

<>

amount

number

purpose

Amount

Number

Purpose

: double

: int

: string

: double

: int

: string

+

+

+

+

+

+

+

<>

<>

<>

<>

<>

<>

PurchaseRequest (double amount,

int number, string purpose)

set_Amount (double value)

get_Amount ()

set_Number (int value)

get_Number ()

set_Purpose (string value)

get_Purpose ()

...

: void

: double

: void

: int

: void

: string

VicePresident

+

+

VicePresident (string name)

ProcessRequest (PurchaseRequest request)

...

: void

President

+

+

President (string name)

ProcessRequest (PurchaseRequest request)

...

: void

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

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

package Application;

public class PurchaseRequest {

//采购金额

private double amount;

//采购单编号

private int number;

//采购目的

private String purpose;

public PurchaseRequest(double amount, int number, String purpose) {

this.amount = amount;

相关文档
最新文档