结构图

代码
class Observer {
public:
Observer();
void update();
};
class Subject {
public:
Subject() {}
virtual ~Subject() {}
void notifyAll() {
MutexLockGuard guard(mutex);
for (auto iter = observers_.begin(); iter != observers_.end();) {
boost::shared_ptr<Observer> obj(iter->lock());
if (obj) {
obj->update();
++iter;
} else {
iter = observers_.erase(iter);
}
}
}
void register_(boost::weak_ptr<Observer> ob) {
MutexLockGuard guard(mutex);
observers_.push_back(ob);
}
private:
std::vector<boost::weak_ptr<Observer> > observers_;
MutexLock mutex;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。