Observer模式,有两个重要的对象我们称之为Observerable和Observer,当Observerable的状态发生改变的时候,注册的observer对象能够得到通知
Observerable对象:
public class Product extends Observable{//广播对象,向往这个对象注册监听的观察者发送广播 private String name; private int price; public String getName() { return name; } public void setName(String name) { this.name = name; setChanged(); notifyObservers(name);//和监听器的区别,监听器需要有一个判空的操作 1-1 1-N } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; setChanged(); notifyObservers(price); } }
Observer对象:
public class NameObserver implements Observer{//监听名字变化的观察者 @Override public void update(Observable o, Object obj) { if(obj instanceof String){ System.out.println("name is changed "+obj); } } }
public class PriceObserver implements Observer{//监听价格变化的观察者 @Override public void update(Observable o, Object arg) { if(arg instanceof Integer){ System.out.println("price is changed"+arg); } } }
测试:
public class Main { public static void main(String[] args) { Product product=new Product(); NameObserver nameObserver=new NameObserver(); PriceObserver priceObserver=new PriceObserver(); //注册观察者 product.addObserver(nameObserver); product.addObserver(priceObserver); //发生改变时会通知注册的观察者 product.setName("aas"); product.setPrice(25); } }
Android中 在Provide里面增删改方法最后写上
ContentResolver注册一个observer来监听数据的更新,调用ContentResolver的方法registerContentObserver()即可完成注册。这样当对应的ContentProvider数据更新的时候,我们向ContentResolver注册的对象方法将会被调用
相关推荐
委托和事件-观察者设计模式 初学者对事件委托,观察模式的理解!
一个观察者设计模式小案例的源码,仅供参考
用观察者设计模式写的一个小demo,可以参考下(android中listview的BaseAdapter使用的就是观察者模式)
一个对象的形态是由另一个对象决定的!这样的模式就可以考虑使用观察者设计模式! 附件内有类图!可以直接编译运行!
java实现观察者设计模式,利用ApplicationListener和ApplicationEvent。Test包里有测试代码
轻松理解观察者设计模式
详细讲解了java中的监听机制以及观察者设计模式
031114_【第11章:Java常用类库】_观察者设计模式笔记
个人针对构建者设计模式、回调和观察者设计模式写的一个Demo,方便大家理解编程设计思想,1分算是大家的鼓励分,希望可以给大家带来方便。
设计模式--观察者模式java例子
ObserverDemo观察者设计模式Demo
java观察者设计模式demo源码
跟我一起学 设计模式-观察者模式 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软
观察者设计模式观察者模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时...
观察者模式 实现抽象的通知者和抽象的被通知者 ├─Observer │ ClassDiagram.cd │ demo.cpp │ observer.h │ Observer2.vcxproj │ Observer2.vcxproj.filters │ student.cpp │ student.h │ subject.h │ ...
Qt设计模式之观察者模式
设计模式之观察者模式Java版本实现和UML类设计图