软件设计模式(JAVA) 10_责任链模式_实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;