• 观察者模式-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++;
            }
        }
    }
  • 相关阅读:
    ELK+Kafka集群日志分析系统
    Centos 6.5 部署 redmine 3.3
    Centos 6.5 搭建l2tp 服务端和客户端
    Logstash之multiline 插件
    MYSQL MHA
    windows上给yii2安装插件
    YII2框架的安装
    Apache服务器配置项和虚拟机配置
    浮点数的比较
    微信自定义菜单总结
  • 原文地址:https://www.cnblogs.com/jianglei-tz/p/6896508.html
Copyright © 2020-2023  润新知