观察者模式

观察者模式是一种程序设计的方法,任何语言都可能弄

思想通俗一点就是这样:

有个一个测试团队,有一个开发者。开发者说有新版本,你们下载吧,然后每个测试人员都下载最新的app。这里测试团队就是”观察者“,他们是被”通知“的对象

//测试人员

class observer_test

{

public:

  observer_test(){}

  ~observer_test(){}

  //下载app

  void download();

}

//开发者

class Developer

{

public:

  Developer(){}

  ~Developer(){}

  void attach(observer_test* observer)

  {

    m_observer.push_back(observer);

  }

  void remove(observer_test* observer)

  {

     m_observers.remove(observer);

  }

  //通知观察者们下载app

  void notify()

  {

    //链表迭代,让观察者们下载

    list<observer_test*>::iterator iter = m_observers.begin();

    for(; iter != m_observers.end(); iter++)

    {

      (*iter)->download();

    }

  }

  list<observer_test*> m_observers;//观察者们

}

int main()

{

  Developer d;

  observer_test tester;

  d.attatch(&tester);

  //通知观察者下载

  d.notify();

}

 

观察者模式还可以理解为:一对多的依赖关系,通知关系,发布订阅关系

posted @ 2017-04-28 16:34  小张学代码  阅读(183)  评论(0编辑  收藏  举报