#include<iostream>
#include<string>
#include<list>
using namespace std;
class Secretary;
class Observer
{
public:
Observer(Secretary* secretary)
{
m_secretary = secretary;
}
void Update(string m)
{
cout << m << endl;
}
private:
Secretary*m_secretary;
};
//被观察者
class Secretary
{
public:
Secretary()
{
m_list.clear();
}
void setObserver(Observer*o)//添加观察者
{
m_list.push_back(o);
}
void Notify(string m)
{
for (list<Observer*>::iterator it = m_list.begin(); it != m_list.end(); it++)
{
(*it)->Update(m);//调用观察者
}
}
private:
list<Observer*>m_list;
};
void main()
{
Secretary *s = new Secretary;
Observer *p1 = new Observer(s);
Observer *p2 = new Observer(s);
s->setObserver(p1);
s->setObserver(p2);
s->Notify("boss is coming!");
s->Notify("boss is gone!");
delete p2;
delete p1;
delete s;
}
行为型模式之观察者模式
最新推荐文章于 2024-08-28 08:00:00 发布