Java设计模式之观察者模式(Observer)
2017-03-19 22:10
681 查看
观察者模式
在Java的设计模式中有一种叫做观察者模式。观察者,顾名思义,就是观察某事某物的变化并作出反应。在程序中也可以使用观察者,首先定义一个观察者接口:
public interface Observer { //其中只定义了一个更新的方法,可以不用参数。 public void update(int i); }
定义了观察者,还需要定义观察者所观察的内容:
import java.util.ArrayList; public abstract class Subject{ ArrayList<Observer> list; public Subject(){ init(); } public void init(){ list = new ArrayList<Observer>(); } public void attach(Observer observer){ if(observer!=null)list.add(observer); } public void Detach(Observer observer){ if(observer!=null)list.remove(observer); } //可以保留空白留待具体的主题来进行操作 public void notifyData(){ Observer observer; //通知所有的观察者 for(int i = 0 ; i < list.size() ; i++){ observer = list.get(i); observer.update(i); } } }
使用观察者的接口可以构建出具体的观察者,并完成相应的功能:
public class ConcreteObserver implements Observer{ private String name; public ConcreteObserver(){ name = ""; } public ConcreteObserver(String name){ if(name!=null)this.name = name; else name = ""; } //继承的方法 public void update(int i){ System.out.println(name + " has been notify"); } }
定义具体的观察内容、主题:
public class ConcreteSubject extends Subject{ public ConcreteSubject(){ super(); } //在具体的主题中通知所有的观察者 public void notifyData(){ Observer observer; for(int i = list.size() ; i > 0 ; i--){ observer = list.get(i-1); observer.update(i); } } }
以上部分就是观察者的内容,只需在主题中添加观察者,运行程序时如果主题有更新,那么所有的观察者都会获得更新。
为什么要使用观察者呢?
使用观察者有利于类的解耦,在建立视图时,视图是常常有更新的,如果每次更新都要一个个的通知与视图有关的类或对象,在程序的执行过程中是不方便的,也不利于程序员对程序的调试维护。
使用观察者时,所有的更新逻辑都使用专门的类来维护,对程序的维护更为简单。
相关文章推荐
- Java设计模式之Observer(观察者)模式
- JAVA设计模式—观察者模式(Observer)
- java设计模式学习系列之六:Observer, 观察者模式---小例
- Java设计模式之Observer-观察者模式
- Java设计模式之从[星际争霸的兵种升级]分析观察者(Observer)模式
- 【设计模式】observer观察者模式:模拟java.awt.Button事件监听。
- Java设计模式-----Observer观察者模式
- java设计模式--观察者模式(Observer)
- java设计模式--观察者模式(Observer)
- java设计模式之观察者模式Observer
- Java设计模式—观察者模式(Observer pattern)
- Java设计模式—观察者模式(Observer pattern)
- JAVA设计模式七--observer(观察者模式)
- Java 设计模式之观察者模式(Observer pattern)
- 设计模式---观察者模式(Observer Pattern with java)
- 设计模式(十九)----- 观察者模式(Observer)----(JAVA版)
- java设计模式之观察者模式Observer
- java设计模式:观察者模式(Observer)
- 设计模式:观察者模式(observer) java实现及原理
- Java开发中的23种设计模式之十五:观察者模式(Observer)