观察者设计模式

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

//观察者基类
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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主目录见:Android高级进阶知识(这是总目录索引)这篇文章我们会来讨论另外一个设计模式观察者设计模式,这个设计...
    ZJ_Rocky阅读 1,120评论 0 5
  • 首先来看看观察者模式的概念: 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能...
    圈圈猫阅读 300评论 0 0
  • 定义: 定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类...
    Not_Found_404阅读 296评论 0 0
  • 人很多时候都被自己的脑袋控制了,实际上我们应该用心去指引脑袋的。可经常弄反了。每当这时,心会烦躁 抓狂 不安 低落...
    福木阅读 261评论 0 0
  • 周末的时间,又是夏天,又是暑假,所以,都应该好好享受 正好借着机会练习换一个方式与身体的人沟通 重复一个非常重要的...
    ykxcxlm阅读 174评论 0 0