观察者模式-Observer

今天两点感悟:

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++;
        }
    }
}

 

转载于:https://www.cnblogs.com/jianglei-tz/p/6896508.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值