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

浙公网安备 33010602011771号