zoukankan      html  css  js  c++  java
  • 设计模式 之 《观察者模式 (Observer)》

     

    #ifndef __OBSERVER_MODEL__
    #define __OBSERVER_MODEL__
    
    #include <string>
    #include <iostream>
    #include <vector>
    using namespace std;
    /*
    GOOD:定义了一种一对多的关系,让多个观察对象(公司员工)同时监听一个主题对象(秘书),
     主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。
    */
    
    class Secretary;
    
    //看股票的同事类(观察对象,观察者)
    class StockObserver
    {
    private:
        string name;
        Secretary* sub;
    public:
        StockObserver(string strName, Secretary* strSub)
        {
            name = strName;
            sub = strSub;
        }
        void update();
    };
    
    //秘书类(主题对象,通知者)
    class Secretary
    {
    private:
        vector<StockObserver> observers;
    public:
        string action;
        void add(StockObserver ob){ observers.push_back(ob); }
        void notify()
        {
            vector<StockObserver>::iterator iter = observers.begin();
            while( iter != observers.end() )
            {
                (*iter).update();
                ++iter;
            }
        }
    };
    
    void StockObserver::update()
    {
        cout<<name<<""<<sub->action<<",不要玩股票了,要开始工作了!"<<endl;
    }
    
    #endif //__OBSERVER_MODEL__
    
    /*
    #include "ObserverModel.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
        //创建通知者
        Secretary* p = new Secretary();
        //观察者
        StockObserver *s1= new StockObserver("小李",p);
        StockObserver *s2 = new StockObserver("小赵",p);
        //加入通知队列
        p->add(*s1);
        p->add(*s2);
        //事件
        p->action="老板来了";
        //通知
        p->notify();
    
        return 0;
    }
    */
  • 相关阅读:
    爬虫例子及知识点(scrapy知识点)
    Xpath()语法
    yield和python(如何生成斐波那契數列)
    Python3导入cookielib失败
    使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
    python使用cookielib库示例分享
    xpath中/和//的差别
    [洛谷P3320] SDOI2015 寻宝游戏
    [洛谷P3322] SDOI2015 排序
    [51nod 1830] 路径交
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3417091.html
Copyright © 2011-2022 走看看