观察者模式
设计模式之观察者模式
观察者模式的使用地方是当某一个类发生改变时,通知所有观察者发生改变。在监听中大量存在,下面代码用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,若是,则是拉伸式。