代码实现:
#include <iostream>
#include <string>
#include <list>
using namespace std;
class Secretary;
class PlayerObserver
{
public:
PlayerObserver(Secretary* secretary)
{
this->secretary = secretary;
}
void update(string action)
{
cout << "action: " << action << endl;
}
private:
Secretary* secretary;
};
class Secretary
{
public:
void notify(string message)
{
for (list<PlayerObserver*>::iterator it = observers.begin(); it != observers.end(); it++)
{
(*it)->update(message);
}
}
void addObserver(PlayerObserver* observer)
{
observers.push_back(observer);
}
protected:
list<PlayerObserver*> observers;
};
void main()
{
Secretary* secretary = new Secretary;
PlayerObserver* observer1 = new PlayerObserver(secretary);
PlayerObserver* observer2 = new PlayerObserver(secretary);
secretary->addObserver(observer1);
secretary->addObserver(observer2);
secretary->notify("Boss is coming. Stop playing games");
delete observer1;
delete observer2;
delete secretary;
}