觀察者模式C++

來源:互聯網
上載者:User

VC++2008 調試通過

// codetest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
using namespace std;
class Observer;
class Subject
{
public:
virtual void Attach(Observer *o)=0;
virtual void Change()=0;
virtual char * toString()=0;
};
class Observer
{
public:
virtual void Update(Subject *s)=0;
};
class Teacher:public Subject
{
public:
Teacher()
{
Oblist=new Observer * [3];
sCount=0;
}
void Attach(Observer *o){
Oblist[sCount++]=o;
}
void Change(){
for(int i=0;i<3;i++)>Update(this);
}
char * toString()
{
return "Teacher X";
}
private:
Observer **Oblist;
int sCount;
};
class Student:public Observer
{
public:
Student(char * str)
{
myName=str;
}
void Update(Subject *s)
{
cout<
<
toString()<
}
private:
char * myName;
};
int _tmain(int argc, _TCHAR* argv[])
{
Student *s1=new Student("A");
Student *s2=new Student("B");
Student *s3=new Student("C");
Teacher t;
t.Attach(s1);
t.Attach(s2);
t.Attach(s3);
t.Change();
return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.