#ifndef __LuckyEgg_V2_1__Observer__ #define __LuckyEgg_V2_1__Observer__ #include <iostream> #include <list> #include <map> using namespace std; using std::list; class MySubject; //观察者 class Observer { public: Observer(){} virtual ~Observer(){} virtual void Update(const std::string& message_type, MySubject* subject) = 0; }; //目标 class MySubject { public: MySubject(){} virtual ~MySubject(){} void Attach(const std::string& message_type, Observer *observer){ m_observers[message_type].push_back(observer);}//添加观察者 void Remove(const std::string& message_type, Observer *observer){ m_observers[message_type].remove(observer);}//移除观察者 void Notify(const std::string& message_type) //通知观察者 { list<Observer*>::iterator iter = m_observers[message_type].begin(); for (; iter != m_observers[message_type].end(); iter++) { (*iter)->Update(message_type, this); } } virtual void SetStatus(string s) = 0;//设置状态 virtual string GetStatus() = 0;//获得状态 private: map<std::string, list<Observer*> >m_observers;//观察者列表 protected: string m_status;//状态 }; #endif /* defined(__LuckyEgg_V2_1__Observer__) */
cocos2dx 监听者模式
猜你喜欢
转载自zhuangshuo.iteye.com/blog/1935179
今日推荐
周排行