美文网首页
观察者设计模式

观察者设计模式

作者: 星月西 | 来源:发表于2017-04-10 20:20 被阅读11次

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听同一个主题对象。这个主题对象在状态改变时,会通知所有的观察者对象,让它们自己能自动更新自己。

    //观察者基类
    class Observer
    {
    public:
        //为多态基类声明一个虚析构函数
        virtual ~Observer(){}
    
        //执行方法
        virtual void update() = 0;
    };
    
    //观察者A
    class ObserverA: public Observer
    {
        void update() override
        {
            cout << "update A" << endl;
        }
    };
    
    //观察者B
    class ObserverB : public Observer
    {
        void update() override
        {
            cout << "update B" << endl;
        }
    };
    
    //主题类
    class Subject
    {
    public:
        //添加观察者
        void add(Observer *observer)
        {
            observers.push_back(observer);
        }
    
        //移除观察者
        void remove(Observer *observer)
        {
            auto position = find(observers.begin(), observers.end(), observer);
            observers.erase(position);
        }
    
        //触发事件,执行订阅方法
        void notify() const 
        {
            for (auto &i : observers)
            {
                i->update();
            }
        }
    private:
        std::vector<Observer*> observers;   //观察者容器
    };
    
    int main()
    {
        Subject sub;
        ObserverA observer1;
        ObserverB observer2;
        sub.add(&observer1);
        sub.add(&observer2);
    
        sub.notify();
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:观察者设计模式

          本文链接:https://www.haomeiwen.com/subject/yadeattx.html