观察者模式的简单实现

来源:互联网 发布:仿美团外卖小程序源码 编辑:程序博客网 时间:2024/05/03 02:53
//两个类均定义为基类,如要将一个类实现为观察者或目标,则需继承,//并在具体目标中加入观察者的状态等参数以便目标实时知道观察者的对应状态class Subject;//观察者基类class Observer{public:explicit Observer(){}virtual ~Observer(){}virtual void Update(Subject*) = 0;};// 观察者模式中的目标class Subject : virtual public QObject{Q_OBJECTpublic:explicit Subject(QObject *parent = NULL): QObject(parent){}virtual ~Subject(){}virtual void attach(Observer* o){for (int i = 0; i < m_listObserver.count(); i++){if(o == m_listObserver.at(i)) return;}m_listObserver.append(o);}virtual void detach(Observer* o){m_listObserver.removeOne(o);}// 通知所有观察者virtual void notify(){/*Observer* o;*/for (int i = 0; i < m_listObserver.count(); i++){m_listObserver.value(i)->Update(this);}}protected:QList<Observer*> m_listObserver;};

原创粉丝点击