zoukankan      html  css  js  c++  java
  • 设计模式:observer模式

    目标:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

    例子:

    class Observer  //观察者
    {
    public:
    	virtual void upadte() = 0; //接受通知
    };
    
    class Manager // 管理者
    {
    public:
    	virtual void registerObserver(Observer* o) = 0; //注册观察者
    	virtual void notify() = 0; //通知所有的观察者
    };
    
    class ManagerImpl: public Manager
    {
    	vector<Observer*> v;
    public:
    	void registerObserver(Observer* o)
    	{
    		v.push_back(o);
    	}
    	
    	void notify()
    	{
    		for(int i=0; i<v.size(); i++)
    		{
    			v[i]->upadte();
    		}
    	}
    };
    
    class FirstObserver: public Observer
    {
    public:
    	void upadte()
    	{
    		cout << "FirstObserver::upadte()" << endl;
    	}
    };
    
    class SecondObserver: public Observer
    {
    public:
    	void upadte()
    	{
    		cout << "SecondObserver::upadte()" << endl;
    	}
    };
    
    int main() 
    {
    	FirstObserver* f = new FirstObserver();
    	SecondObserver* s = new SecondObserver();
    	ManagerImpl* m = new ManagerImpl();
    	m->registerObserver(f);
    	m->registerObserver(s);
    	m->notify();
    	
    	return 0;
    }
    
  • 相关阅读:
    MarkDownPad2 注册码
    如何让你的.vue在sublime text 3 中变成彩色?
    字典树入门
    博弈论
    复杂度问题
    gets scanf以及缓冲区域的问题
    对象
    矩阵转置的一般算法
    二叉树的建立、遍历、叶子节点计数、深度计算
    D
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11434079.html
Copyright © 2011-2022 走看看