观察者模式

   设计模式之观察者模式

   观察者模式的使用地方是当某一个类发生改变时,通知所有观察者发生改变。在监听中大量存在,下面代码用java实现。

package com.voole.test;

public interface IObserable {
	/* @declaretion: 定义被观察者的接口
	 * @author: yzj
	 * @Description:添加,删除观察者,求观察者数量,并及时通知观察者*/
	//添加
	void addObservers(IObserver observer);
	//删除
	void deleteObservers(IObserver observer);
	//返回注册观察者数量
	int getObserversCount();
	//通知所有观察者
	void notifyObservers();
}


package com.voole.test;

import java.util.ArrayList;
import java.util.List;

/* @declaretion:被观察者对象
 * @author: yzj
 * @Description:添加,删除观察者,求观察者数量,并及时通知观察者*/
public class ConcreteObservable implements  IObserable {
	//定义观察者对象
	private List<IObserver> observers = new ArrayList<IObserver>();
	//添加
	public void addObservers(IObserver observer){
		observers.add(observer);
	}
	
	//删除对象
	public void deleteObservers(IObserver observer){
		observers.remove(observer);
	}
	
	//返回当前注册对象
	public int getObserversCount(){
		return observers.size();
	}
	
	//通知所有观察者发生改变
	public void notifyObservers(){
		for(IObserver observer:observers){
			observer.update(this);
		}
	}
}


package com.voole.test;

public interface IObserver {
	void update(ConcreteObservable o);
}

package com.voole.test;

public class ConcreteObserver implements IObserver{

	@Override
	public void update(ConcreteObservable o) {
		//此处做更新处理
	}

}

  此处的为拉伸式的观察者模式,还有就是推送式的观察者模式,主要的区别就是是否把Observable作为参数传递给Observer,若是,则是拉伸式。

posted @ 2016-10-14 14:54  麦子TMAC  阅读(290)  评论(0编辑  收藏  举报