设计模式与XML(五)状态模式、观察者模式和策略模式(C++)

一、实验目的及要求

1、掌握行为型模式的概念。

2、掌握备忘录模式、观察者模式、状态模式、策略模式、模板模式、访问者模式的构造方式及使用情景。

二、实验设备(环境)

   1、   软件需求: Dev-Cpp5.4, Rational Rose / Microsoft Visio

2、   硬件需求: Pentium III 450以上的CPU处理器,1G以上的内存,2G的自由硬盘空间

 

三、实验内容

1、在某银行系统定义的账户有三种状态:

(1) 如果账户(Account)中余额(balance)大于等于0,此时账户的状态为绿色(GreenState),即正常状态,表示既可以向该账户存款(deposit)也可以从该账户取款(withdraw);

(2) 如果账户中余额小于0,并且大于等于-1000,则账户的状态为黄色(YellowState),即欠费状态,此时既可以向该账户存款也可以从该账户取款;

(3) 如果账户中余额小于-1000,那么账户的状态为红色(RedState),即透支状态,此时用户只能向该账户存款,不能再从中取款。

现用状态模式来实现状态的转化问题,用户只需要执行简单的存款和取款操作,系统根据余额数量自动转换到相应的状态。银行账户实例类图和状态图分别如图1和图2。

 

2、对于题目1中的银行系统账户,使用观察者模式策略模式作改进,使得:

(1)在图1中增加银行类Bank,当银行中有新的银行政策出台或新的金融产品发布,就向所有的账户Account发短信消息notify(string message)。

(2)对于图1中的账户类Account,关联一个消息策略类MessageStrategy,增加相应的成员变量msStrategy和成员函数setStrategy(),可以更换账户接收消息的方式,并在成员函数Response(string message)中根据不同的策略(如微信或短信)给账户提示消息:如果是银行类Bank发送的通知,则在MessageBox窗口(模拟短信)中显示消息;如果是账户变动产生的提醒,则在控制台(模拟微信)中打印余额Balance和账户状态消息。

 

图1 银行账户实例类图

 

图2 银行账户状态图

 

 

四、实验步骤与结果

练习一

1.状态模式设计结构图UML图:

 

2.实验结果截图:

3.代码分析:

Account.h

#ifndef _ACCOUNT_H_
#define _ACCOUNT_H_
#include<iostream>
#include<string>
#include<list>
using namespace std;
class AccountState;
class Account
{
	public:
		Account(string owner,double init);
		~Account();
		void deposit(d
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值