观察者模式
观察者模式是一种程序设计的方法,任何语言都可能弄
思想通俗一点就是这样:
有个一个测试团队,有一个开发者。开发者说有新版本,你们下载吧,然后每个测试人员都下载最新的app。这里测试团队就是”观察者“,他们是被”通知“的对象
//测试人员
class observer_test
{
public:
observer_test(){}
~observer_test(){}
//下载app
void download();
}
//开发者
class Developer
{
public:
Developer(){}
~Developer(){}
void attach(observer_test* observer)
{
m_observer.push_back(observer);
}
void remove(observer_test* observer)
{
m_observers.remove(observer);
}
//通知观察者们下载app
void notify()
{
//链表迭代,让观察者们下载
list<observer_test*>::iterator iter = m_observers.begin();
for(; iter != m_observers.end(); iter++)
{
(*iter)->download();
}
}
list<observer_test*> m_observers;//观察者们
}
int main()
{
Developer d;
observer_test tester;
d.attatch(&tester);
//通知观察者下载
d.notify();
}
观察者模式还可以理解为:一对多的依赖关系,通知关系,发布订阅关系