设计模式

来源:互联网 发布:日本电脑软件 编辑:程序博客网 时间:2024/06/03 21:30

(1)定义

建立对象间的一种一对多依赖关系,当一个对象状态发生改变时,其相关对象皆得到通知并被自动更新。

(2)应用场景

    •群发信息
    •消息提示

(3)实现

class Subject{public:Subject();virtual ~Subject();Obeserver *m_Obeserver;void attach(Obeserver * pObeserver);void detach(Obeserver * pObeserver);void notify();virtual int getState() = 0;virtual void setState(int i)= 0;private:vector<Obeserver*> m_vtObj;};

class Observer{public:Observer();virtual ~Observer();virtual void update(Subject * sub) = 0;};

int main(int argc, char *argv[]){Subject * subject = new ConcreteSubject();Observer * objA = new ConcreteObserver("A");Observer * objB = new ConcreteObserver("B");subject->attach(objA);subject->attach(objB);subject->setState(1);subject->notify();delete subject;delete objA;delete objB;return 0;}

(4)优点

    •稳定的消息更新传递机制
    •支持广播通信

(5)缺点 

    •观察者很多的时候,通知所有的观察者到会花费很多时间。
    •存在循环依赖时,会导致系统崩溃。
    •观察者仅知道目标变化,但不知道如何变化。

原创粉丝点击