实验报告(观察者模式)

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

成绩:实验报告

课程名称:设计模式

实验项目:观察者模式

姓名:李晨曦

专业:计算机科学与技术

班级:计算机10-1

学号:1004010120

计算机科学与技术学院

实验教学中心

2012 年07 月2 日

实验项目名称:观察者模式( 2学时)一、实验目的

熟悉并学会使用观察者模式编写程序。

二、实验内容

分别设计一个文档类和一个视图类,并将这两个类进行关联。文档类的对象在视图类的对象中显示出来,当文档对象发生变化时要及时通知视图类对象,以便视图类对象能及时将文档对象正确显示出来。(提示:用 java )

三、实验步骤

按照要求编写程序

四、实验结果

五、程序代码

#include

#include

#include

#include

using namespace std;

class shitu;

struct shitu_listener{

shitu_listener(){}

virtual ~shitu_listener(){}

virtual void shitu_clicked(shitu* btn)=0;

};

class shitu{

private:

vector listeners;

typedef vector::iterator bit_type;

string name;

public:

string get_name(){return name;};

shitu(string n):name(n){}

~shitu(){}

void add_shitu_listener(shitu_listener* bls){

listeners.push_back(bls);

}

void remove_shitu_listener(shitu_listener* bls){

listeners.erase(remove(

listeners.begin(),listeners.end(),bls),

listeners.end());

}

void run(){

for(bit_type it=listeners.begin();it!=listeners.end();++it){ shitu_listener* bls = *it;

bls->shitu_clicked(this);

}

}

};

class wendang:public shitu_listener{

private:

int i;

public:

wendang(int ii):i(ii){}

void shitu_clicked(shitu* btn){

cout<<"文档内容为"<<" "<

cout<get_name()<<" "<

}

};

int main(){

shitu* btn = new shitu("视图内容");

shitu_listener* bls1 = new wendang(1);

shitu_listener* bls2 = new wendang(2);

shitu_listener* bls3= new wendang(3);

btn->add_shitu_listener(bls1);

btn->add_shitu_listener(bls2);

btn->add_shitu_listener(bls3);

btn->run();

btn->remove_shitu_listener(bls1);

delete btn;

delete bls1;

delete bls2;

return 0;

}

相关文档
最新文档