//note: 定义Observer抽象类接口
class Subject;
class Observer{
public:
virtual ~Observer();
virtual void Update(Subject * theChangeSubject) = 0;
protected:
Observer();
};
class Subject{
public:
virtual ~Subject();
virtual void Attach(Observer*);
virtual void Detach(Observer*);
virtual void Notify();
protected:
Subject();
private:
list<Observer*> * _observers;
};
void Subject::Attach(Observer* o){
_observers->Append(o);
}
void Subject::Detach(Observer* o){
_observers->Detach(o);
}
void Subject::Notify(){
ListIterator<Observer*> i(_observers);
for(i.First(); !i.IsDone(); i.Next()){
i.CurrentItem()->Update(this);
}
}
设计模式:观察者模式
最新推荐文章于 2023-06-29 08:46:56 发布