java设计模式学习之观察者模式(一)
来源:互联网 发布:软件的三层架构 编辑:程序博客网 时间:2024/05/30 02:25
观察者模式定义了对象之间的一对多的依赖,当一个对象改变状态时,他的所有依赖者都会收到通知并且自动更新。
观察者提供了一种对象设计,让观察者和主题之间的松耦合。、
设计原则:
1.为了对象之间的松耦合设计而努力。
步骤:
1.目标对象的定义2.具体目标对象的定义3.观察者接口的定义4.观察者接口的具体实现
一种观察者模式实现的通用框架
package observer;import java.util.ArrayList;/** * 目标对象 */public class Subject { //保存注册的观察者对象 private ArrayList<Observer> observers = new ArrayList<Observer>(); public void registerObserver(Observer o) { observers.add(o); } public void removeObserver(Observer o) { observers.remove(o); } //通知注册的观察者 protected void notifyObserver() { for (Observer observer : observers) { observer.update(this); } }}
package observer;public class ConcreateSubject extends Subject{ private String subjectState; public String getSubjectState() { return subjectState; } public void setSubjectState(String subjectState) { this.subjectState = subjectState; this.notifyObserver(); }}
package observer;/** * 所有的观察者都实现这个接口。主题在通知观察者时,就有了一个共同的接口 */public interface Observer { public void update(Subject subject);}
package observer;public class ConcreateObserver implements Observer{ private String observerState; /** * 获取目标的状态同步到观察者状态 * */ @Override public void update(Subject subject) { observerState = ((ConcreateSubject)subject).getSubjectState(); System.out.println(this.toString()); } @Override public String toString() { return "ConcreateObserver [observerState收到" + observerState + "]"; }}
测试代码及结果
package observer;public class test { public static void main(String[] args) { ConcreateSubject concreateSubject = new ConcreateSubject(); Observer observer = new ConcreateObserver(); concreateSubject.registerObserver(observer); concreateSubject.setSubjectState("1"); concreateSubject.setSubjectState("3"); }}
ConcreateObserver [observerState收到1]
ConcreateObserver [observerState收到3]
0 0
- java设计模式学习之观察者模式(一)
- java设计模式学习之观察者模式
- java设计模式学习(一):观察者模式(一)
- 设计模式学习笔记之观察者模式(一)
- java设计模式之“观察者设计模式”
- Java设计模式之观察者设计模式
- 《java设计模式》之观察者设计模式
- 设计模式学习(一)观察者模式
- java学习之路----设计模式----观察者模式
- java设计模式学习之观察者模式(二)
- Java设计模式(5)之观察者模式学习总结
- 每天一设计模式之观察者模式
- 设计模式之观察者模式(一)
- (一)设计模式复习之观察者模式
- 设计模式之观察者模式(一)
- 设计模式一之观察者模式
- Java设计模式之观察者
- Java设计模式之观察者
- TsComponentPack - delphi开发组件包
- Max Sum
- Java实用I/O方法总结
- 解决 Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/O...
- BT种子文件信息库-TorrentinfoLibrary
- java设计模式学习之观察者模式(一)
- Linux 内核模块makefile
- struts2 入门
- Segments - POJ 3304 线段相交
- 开源ETL工具 Pentaho Kettle
- jdk动态代理(动态生成字节码与反射机制的结合)
- Product of Array Except Self
- 使用pip安装numpy库问题汇总
- 机器学习之径向基神经网络(RBF NN)