实验报告(观察者模式)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
typedef vector
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< } }; 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; }