1、问题
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are nofitied and updated automatically.
2、算法
class Observer
{
private:
int id ;
public:
Observer(int id):id(id){} ;
void update()
{
printf("observer %d update \n", id) ;
}
};
class Subject
{
private:
std::vector<Observer*> observers ;
public:
void addObserver( Observer* observer )
{
observers.push_back(observer) ;
}
void removeObserver(Observer* observer)
{
for (std::vector<Observer*>::iterator it = observers.begin(); it != observers.end(); it++)
{
if (*it == observer)
{
observers.erase(it) ;
break ;
}
}
}
void notify()
{
for( auto ob : observers )
{
ob->update() ;
}
}
};