简介 三月份的时候,我接到一个IPhone游戏项目的开发,为了这个游戏,我学习了观察者模式,并使用它在我的游戏里 背景 在我的游戏中,我设计的GameScene来当作游戏关卡的上层类。
背景
在我的游戏中,我设计的GameScene来当作游戏关卡的上层类。它继承Observable,利用GameRole来实践游戏角色,像是Player跟NPC。GameRole则实践Observer,利用观察者模式来实践关卡中的角色的更新。
代码如下
1. class Observable;
2. class Observer : public NSObject
3. {
4. private:
5. // --- Add private member --- //
6. public:
7. // --- Add public member --- //
8. Observer();
9. virtual ~Observer();
10. virtual void Update() = 0;
11. };
12. typedef set<observer*> SET;
13. class Observable : public NSObject
14. {
15. private:
16. // --- Add private member --- //
17. SET m_observers;
18. public:
19. // --- Add public member --- //
20. Observable();
21. virtual~Observable();
22. void RegisterObserver(Observer *o);
23. void RemoveObserver(Observer *o);
24. void NotifyObservers();
25. };
26. void Observable::RegisterObserver(Observer *o)
27. {
28. m_observers.insert(o);
29. }
30. void Observable::RemoveObserver(Observer *o)
31. {
32. m_observers.erase(o);
33. }
34. void Observable::NotifyObservers()
35. {
36. SET::reverse_iterator index;
37. SET::reverse_iterator end = m_observers.rend();
38. for(index = m_observers.rbegin(); index != end; index++)
39. {
40. ((Observer*)(*index))->Update();
41. }
42. }