1. 程式人生 > >C++設計模式之觀察者模式

C++設計模式之觀察者模式

圖片 .com attach mov pan rtu cts gin pda

技術分享圖片

//觀察者模式
class Observer{
public:
    virtual void Updata() = 0;
};
class Subject{
public:
    void Attach(Observer* in){ m_list.push_back(in); }
    void Detach(Observer* out){ m_list.remove(out); }
    void Notify(){
        for (auto it = m_list.begin(); it != m_list.end(); it++){
            (*it)->Updata();
        }
    }
private: list<Observer*> m_list; }; class ConcreteSubject :public Subject{ public: string SubjectState; }; class ConcreteObserver:public Observer{ public: ConcreteObserver(ConcreteSubject *subject){ m_subject = subject; } void Updata(){ ObserverState = m_subject->SubjectState; cout
<< ObserverState << endl; } private: ConcreteSubject *m_subject; string ObserverState; }; int main(){ ConcreteSubject *s = new ConcreteSubject(); s->Attach(new ConcreteObserver(s)); s->Attach(new ConcreteObserver(s)); s->Attach(new ConcreteObserver(s)); s
->SubjectState = "ABC"; s->Notify(); return 0; }

技術分享圖片

C++設計模式之觀察者模式