实现C++ 观察者模式
class Observer{
public:
Observer(int id):m_id(id){};
void obPirnt(){
cout << "obj " << m_id << " find change!" << endl;
}
private:
int m_id;
};
class Sub{
public:
void insert(Observer& obj){
m_list.push_back(obj);
}
void change(int x){
cout << "sub change : " << x << endl;
broadcast();
}
void broadcast(){
int len = m_list.size();
if(len == 0) return;
auto it = m_list.begin();
for(int i = 0; i < len; i++){
it->obPirnt();
it++;
}
}
private:
list<Observer> m_list;
};
测试程序:
int main() {
Observer o1(1),o2(2),o3(3);
Sub sub;
sub.insert(o1);sub.insert(o2);sub.insert(o3);
sub.change(1);
return 0;
}
输出结果:


浙公网安备 33010602011771号