观察者模式,又称发布--订阅,mvc模式等. 通俗点讲,比如股票来说,很多人关注一支股票,派一个人去观察股票的情况,一有变化(观察),通知所有的预定这个消息的人.
  而我们常见的mvc模式,v是指view-视图,m指model-模型,有点类似观察者模式,模型中的数据,一有变化通知相关联的视图. 这样很方便地隔离开了模型和视图.
  这里使用的例子是关于博客的订阅. 博客属于被观察的对象,订阅者属于观察者. 订阅者先订阅(注册)博客,博客一有更新,会遍历注册表,给订阅者推送更新的博客.
  自己画UML图,,,我是自己画的,UML图对于写程序确实很有帮助.  下面直接给出相应代码:
  observer.h:
#ifndef OBSERVER_H
#define OBSERVER_H
#include<string>
#include "subject.h"
using namespace std;
class Blog;
class BlogCSDN;
class Observer
{
public:
Observer() {}
virtual ~Observer() {}
virtual void Update() {}
};
class ObserverBlog : public Observer
{
private:
string m_name; //观察者名称
Blog *m_blog; //观察的博客,以链表的形式更好,可以观察多个博客
public:
ObserverBlog(string name, Blog *blog): m_name(name), m_blog(blog) {}
~ObserverBlog() {}
void Update();
};
#endif
   observer.cpp
#include "observer.h"
#include<iostream>
using namespace std;
void ObserverBlog::Update()
{
string status = m_blog->GetStatus();
cout << m_name << "-------" << status << endl;
}
subject.h