简介 三月份的时候,我接到一个IPhone游戏项目的开发,为了这个游戏,我学习了观察者模式,并使用它在我的游戏里 背景 在我的游戏中,我设计的GameScene来当作游戏关卡的上层类,它继承Observable,利用GameRole来实践游戏角色 像是Player跟NPC,GameRole则实践Observer 利用观察者模式,来实践关卡中的角色的更新 UML Observer Code class Observable; class Observer : public NSObject { private: // --- Add private member --- // public: // --- Add public member --- // Observer(); virtual ~Observer(); virtual void Update() = 0; }; typedef set<observer*> SET; class Observable : public NSObject { private: // --- Add private member --- // SET m_observers; public: // --- Add public member --- // Observable(); virtual~Observable(); void RegisterObserver(Observer *o); void RemoveObserver(Observer *o); void NotifyObservers(); }; void Observable::RegisterObserver(Observer *o) { m_observers.insert(o); } void Observable::RemoveObserver(Observer *o) { m_observers.erase(o); } void Observable::NotifyObservers() { SET::reverse_iterator index; SET::reverse_iterator end = m_observers.rend(); for(index = m_observers.rbegin(); index != end; index++) { ((Observer*)(*index))->Update(); } }