#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
/*
观察者
*/
class IObserver
{
public:
IObserver(){}
virtual ~IObserver(){}
virtual void update() = 0;
};
/*
观察者1;
*/
class FirstObserver :public IObserver
{
public:
FirstObserver(){}
virtual ~FirstObserver(){}
virtual void update()
{
cout<<"FirstObserver KNOW OBSERVERABLE DO ACTION" <<endl;
}
};
class SecondObserver :public IObserver
{
public:
SecondObserver(){}
virtual ~SecondObserver(){}
virtual void update()
{
cout<<"SecondObserver KNOW OBSERVERABLE DO ACTION" <<endl;
}
};
/**
被观察者
*/
class Observable
{
public:
Observable()
{
}
~Observable()
{
}
void addObser(IObserver* obser)
{
m_obserSet.push_back(obser);
}
void removeObser(IObserver* obser)
{
m_obserSet.pop_back();
}
void doAction()
{
cout<<"Observable do some action " <<endl;
this->notifyAllObser();
}
void notifyAllObser()
{
vector< IObserver* > ::iterator iter = m_obserSet.begin();
for (;iter !=m_obserSet.end();iter++)
{
(*iter)->update();
}
}
private:
vector< IObserver* > m_obserSet;
};
int _tmain(int argc, _TCHAR* argv[])
{
IObserver * fober = new FirstObserver();
IObserver * sober = new SecondObserver();
Observable * oble = new Observable;
oble->addObser(fober);
oble->addObser(sober);
oble->doAction();
return 0;
}
设计模式之观察者模式实例
最新推荐文章于 2023-07-02 14:17:18 发布