1.观察者模式原理:观察者发现有情况变化,发布通知
- 场景1:红绿灯信号变化(被观察者),车辆行驶状态变化(观察者)
- 场景2:订阅号发布消息(被观察者),用户收到更新的订阅信息(观察者)
- 场景3:哨兵观察前线状态(被观察者),士兵准备战斗或休息(观察者)
2.选择场景3来写Code
.h文件Code
class Soldier
{
public:
void rec_Information(string s);
};
class Guard
{
private:
list<Soldier*> L;
public:
void send_Information(string info);
void add_Obesever(Soldier* curSoldier);
};
.c文件Code
#include "Obesever.h"
int main()
{
Guard* g = new Guard;
Soldier* s1 = new Soldier;
Soldier* s2 = new Soldier;
Soldier* s3 = new Soldier;
g->add_Obesever(s1);
g->add_Obesever(s2);
g->add_Obesever(s3);
g->send_Information(string("敌人来了!"));
delete g;
delete s1;
delete s2;
delete s3;
return 0;
}
void Soldier::rec_Information(string s)
{
cout << s << "收到information" << endl;
}
void Guard::send_Information(string info)
{
for (list<Soldier*>::iterator it = L.begin(); it != L.end(); it++)
{
(*it)->rec_Information(info);
}
}
void Guard::add_Obesever(Soldier* curSoldier)
{
L.push_back(curSoldier);
}