00001
00002
00003 #ifndef _Observer_h
00004 #define _Observer_h
00005
00010 class Subject;
00011
00012 #include <list>
00013
00020 class Subject;
00021
00022 class Observer
00023 {
00024
00025 public:
00026
00027 friend class Subject;
00028
00032 Observer();
00033
00037 virtual ~Observer();
00038
00043 int numberOfSubjects() const;
00044
00052 virtual void notify();
00053
00054
00055 protected:
00056
00061 void addSubject(Subject *subject);
00062
00067 void removeSubject(Subject *subject);
00068
00069
00070 private:
00071
00078 void Observe(Subject *subject);
00079
00088 void unObserve(Subject *subject);
00089
00090 typedef std::list<Subject *>::iterator ListIterator;
00091 std::list <Subject *>sublist;
00092 };
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00121 #endif // _Observer_h
00122