Observer模式
这个模式理解起来应该算很简单。定义了一种1对多的关系。当其中“1”描述的对象变化时,“多”描述的多个对象都能得到通知并且被自动更新。
我们把“1”称为subject,“多”称为observer。如何让他们之间发生关系。使用组合。
在subject中,我们拥有一个observer引用的列表,和3个成员函数,
addObserver( observer* ), 添加一个observer
deleteObserver( observer* ),删除以前加入的observer
notify()。 发生变化时,调用的通知函数
它的C++的具体实现:
/
class subject{
vector m_obs;
int addObserver( observer* obs )
{
m_obs.add( obs );
}
int deleteObserver( observer* obs )
{
m_obs.delete( obs );
}
int notify()
{
for( observer* e = m_obs.begine(); e != m_obs.end(); e++ )
{
e->updata( this );
}
}
}
///
class observer{
int updata( subject* sub )
{
根据sub的信息,更新observer的状态
}
}
事件监听使用的模式,就是observer模式。
这个模式理解起来应该算很简单。定义了一种1对多的关系。当其中“1”描述的对象变化时,“多”描述的多个对象都能得到通知并且被自动更新。
我们把“1”称为subject,“多”称为observer。如何让他们之间发生关系。使用组合。
在subject中,我们拥有一个observer引用的列表,和3个成员函数,
addObserver( observer* ), 添加一个observer
deleteObserver( observer* ),删除以前加入的observer
notify()。 发生变化时,调用的通知函数
它的C++的具体实现:
/
class subject{
vector m_obs;
int addObserver( observer* obs )
{
m_obs.add( obs );
}
int deleteObserver( observer* obs )
{
m_obs.delete( obs );
}
int notify()
{
for( observer* e = m_obs.begine(); e != m_obs.end(); e++ )
{
e->updata( this );
}
}
}
///
class observer{
int updata( subject* sub )
{
根据sub的信息,更新observer的状态
}
}
事件监听使用的模式,就是observer模式。