观察者模式代码例子
1 //观察者模式 2 #include<iostream> 3 #include<list> 4 using namespace std; 5 6 class MasterListener 7 { 8 public: 9 virtual void OnChange() 10 { 11 }; 12 13 }; 14 15 class Student1:MasterListener 16 { 17 public: 18 void OnChange() 19 { 20 cout<<"同学A不看小说了"<<endl; 21 }; 22 }; 23 24 25 class Student2:MasterListener 26 { 27 public: 28 void OnChange() 29 { 30 cout<<"同学B不玩手机了"<<endl; 31 }; 32 }; 33 34 35 class Master 36 { 37 protected: 38 list<MasterListener*>m_list; 39 //MasterListener* m_MasterListenerPtr; 40 public: 41 void setListener(MasterListener* m_MasterListenerPtr) 42 { 43 m_list.push_back(m_MasterListenerPtr); 44 //m_MasterListenerPtr=m_MasterListener; 45 }; 46 void Notify() 47 { 48 for(list<MasterListener*>::iterator iter=m_list.begin();iter!=m_list.end();iter++) 49 { 50 (*iter)->OnChange(); 51 }; 52 }; 53 }; 54 55 int main() 56 { 57 Student1 *m_student1=new Student1; 58 Student2 *m_student2=new Student2; 59 Master m_master; 60 m_master.setListener(m_student1); 61 m_master.setListener(m_student2); 62 63 cout<<"老师来了"<<endl; 64 m_master.Notify(); 65 66 getchar(); 67 return 0; 68 };