行为型模式之观察者模式

#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;

}

阅读更多
上一篇行为型模型之中介者模式
下一篇行为型模式之备忘录模式
想对作者说点什么? 我来说一句

(行为型模式) Observer 观察者模式

2009年12月05日 10.72MB 下载

没有更多推荐了,返回首页

关闭
关闭