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;
    }
    
  • 相关阅读:
    IOS之UIKit_Day13
    IOS之UIKit_Day12
    IOS之UIKit_Day11
    IOS之UIKit_Day10
    iOS设计模式之工厂模式
    常用操作
    盒子模式
    block循环使用问题
    IOS-sqlite3
    IOS-View用作控制器
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11434079.html
Copyright © 2011-2022 走看看