观察者模式也称为发布-订阅(publish-subscribe),目标就是通知的发布者,观察者则是通知的订阅者(接受通知)。例如在Model/View/Control(MVC)结构在系统开发架构设计中有着很重要的地位和意义。实现了业务逻辑和表示层的解耦。
template <class T>
class INotify
{
public:
INotify()
{
m_TList.clear();
}
~INotify()
{
list::iterator iter=m_TList.begin();
for(;iter!=m_TList.end();iter++)
m_TList.erase(iter);
}
void Attach(T * t)
{
list::iterator iter;
iter=find(m_TList.begin(),m_TList.end(),t);
if(iter==m_TList.end()) m_TList.push_back(t);
}
void Detach(T * t)
{
list::iterator iter;
iter=find(m_TList.begin(),m_TList.end(),t);
if(iter!=m_TList.end()) m_TList.erase(iter);
}
void NotifyChange()
{
list::iterator iter=m_TList.begin();
for(;iter!=m_TList.end();iter++)
iter->NotifyChange();
}
private:
list<T *> m_TList;
};