设计模式之观察者模式与其C++通用实现(上)2010-09-14 CSDN博客 林石观察者模式意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。结构:

优点:目标(Subject)与观察者(Observer)间抽象耦合支持广播通信/通知缺点:会带来意外更新问题示例:考虑这样一个例子:想知道公司最新的MM情报吗?加入我们MM情报邮件组吧。您只需要向我们发送一封订阅邮件即可,我们会把最新的MM情报以电子邮件形式通知您。现在我们来一步一步实现。很明显,示例中关心MM情况的人物即为订阅者,我们以Subscriber表示这一类人。在定义Subscriber之前我们先定义一个MMStatus枚举,用以表示MM状态:1.enum MMStatus {Dining, Sleeping, Working};这里定义了三个常量用以简单地模拟MM所处的状态。现在我们可以定义Subscriber类了:
1.struct Subscriber
2.{
3.virtual void action(MMStatus status) = 0;
4.virtual ~Subscriber() {}
5.};