|
今天两点感悟:
1、代码尽量不要拷贝,能自己敲的就自己敲吧。这样的好处最明显的地方就是加深理解记忆,以后面试的时候不至于我知道在哪里,但是回答不上来。
2、多写东西,自己的东西,不要拷贝,自己怎么理解的就怎么写。那是自己的,不是别人的。
观察者模式-Oberver
说明:当被观察者Obervenber的属性改变时,通知观察者,this(被观察者)的值改变了。
观察者代码
class CObserver {
public:
CObserver();
virtual ~CObserver();
virtual void Update(CObservable* pObservable);
private:
};
被观察者
class CObservable {
public:
CObservable();
virtual ~CObservable();
void Notiy();
void RegisterObserver(CObserver* pObserver);
void UnRegisterObserver(CObserver* pObserver);
private:
list<CObserver*> m采用listObserverPtr;
};
CObservable::CObservable() {
m采用listObserverPtr.clear();
}
CObservable::~CObservable() {
m采用listObserverPtr.clear();
}
void CObservable::Notiy()
{
list<CObserver*>::iterator it;
for(it = m采用listObserverPtr.begin();it != m采用listObserverPtr.end();it++)
{
(*it)->Update(this);
}
}
void CObservable::RegisterObserver(CObserver* pObserver)
{
if(pObserver)
{
m采用listObserverPtr.push采用back(pObserver);
}
}
void CObservable::UnRegisterObserver(CObserver* pObserver)
{
list<CObserver*>::iterator it;
for(it = m采用listObserverPtr.begin();it != m采用listObserverPtr.end();)
{
if(pObserver == *it)
{
m采用listObserverPtr.erase(it);
}
else
{
it++;
}
}
} |
|