美文网首页
2.观察者模式

2.观察者模式

作者: hyhx_2008 | 来源:发表于2015-07-26 20:04 被阅读0次

    定义


    观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。

    类图


    观察者模式.png

    代码


    //subject.h
    class subject
    {
        public:
            virtual void register_observer(observer* ob) = 0;
            virtual void remove_observer(observer* ob) = 0;
            virtual void notify_observers() = 0;
        
        private:
            std::set<observer*> observer_set;
    };
    
    class concreate_subject: public subject
    {
        public:
            void register_observer(observer* ob);
            void remove_observer(observer* ob);
            void notify_observers();
    };
    
    
    //subject.cpp
    void concreate_subject:: register_observer(observer* ob)
    {
        observer_set.insert(ob);
    }
    
    void concreate_subject:: remove_observer(observer* ob)
    {
        observer_set.erase(ob);
    }
    
    void concreate_subject:: notify_observers()
    {
        std::set<int>::iterator it;
        for (it = observer_set.begin(); it != observer_set.end(); it++)
        {
            if (*it != NULL)
                *it->update();
        }
    }
    
    //observer.h
    class observer
    {
        public:
            virtual void update() = 0;
    };
    
    class observer_1: public observer
    {
        public:
            void update();
    };
    
    //observer.cpp
    void observer_1::update()
    {
        printf("notified by subject\n");
    }
    

    笔记


    1.为了交互对象之间的松耦合设计而努力。

    相关文章

      网友评论

          本文标题:2.观察者模式

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