一、实验目的及要求
1、掌握行为型模式的概念。
2、掌握责任链模式、命令模式、解释器模式、迭代器模式、中介者模式的构造方式及使用情景。
二、实验设备(环境)
1、 软件需求: Dev-Cpp5.4, Rational Rose / Microsoft Visio
2、 硬件需求: Pentium III 450以上的CPU处理器,1G以上的内存,2G的自由硬盘空间
三、实验内容
1、为了用户使用方便,遥控器提供了一个功能键,用户可以自定义功能键的功能,如功能键FunctionButton可以用于退出系统(SystemExitClass),也可以用于打开帮助界面(DisplayHelpClass)。现使用命令模式来设计该系统,使得功能键类与功能类之间解耦,相同的功能键可以对应不同的功能。
2、电视机遥控器就是一个迭代器的实例,通过它可以实现对电视机频道集合的遍历操作,本实例我们将模拟电视机遥控器的实现。请使用迭代器模式实现对于频道集合(100个频道)的2种遍历方式:(1)单步向前和单步向后遍历。(2)有条件的单步遍历。即在频道集合中屏蔽掉频道20-30和频道80-90(假设这些频道仅对VIP用户开放),也就是在单步遍历中跳过这些频道。
要求对于2种遍历(1)和(2)都要实现共同的接口setChannel(int i), currentChannel(), next(), previous(), isLast(), isFirst().
四、实验步骤与结果
练习一
1.命令模式设计结构图UML图:
2.实验运行结果截图:
3.代码分析
Command.h
#ifndef _COMMAND_H_
#define _COMMAND_H_
class Reciever;
class Command
{
public:
virtual ~Command();
virtual void Excute() = 0;
protected:
Command();
private:
};
class ConcreteCommand1:public Command
{
public:
ConcreteCommand1(Reciever* recv);
~ConcreteCommand1();
void Excute();
protected:
private:
Reciever* _recv;
};
class ConcreteCommand2:public Command
{
public:
ConcreteCommand2(Reciever* recv);
~ConcreteCommand2();
void Excute();
protected:
pri