JAVA观察者模式在安卓中的应用
2017-06-24 17:24
267 查看
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
观察者模式所涉及的角色有以下四个:
抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个集合(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,在我们安卓开发中,我通常把这个抽象主题角色定义为application。
具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。其实就是执行通知观察者更新状态的角色。
抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,这个接口叫做更新接口。
具体观察者(ConcreteObserver)角色:存储与主题的状态自恰的状态,实现抽象观察者角色所要求的更新接口,在相应的抽象方法中去进行必要的操作,以便使本身的状态与主题的状态相协调。
抽象主题角色:
具体主题角色:
抽象观察者角色:
具体观察者角色:
如果我们想要控制每次通知更新的时候,都是在我们想要的activity中去更新,而其他的activity不更新,这样我们只需要,在进入这个activity中调用addEcgObserver(EcgObserverecg);退出的时候调用delEcgObserver(EcgObserverecg),这样就OK啦!
以上就是我对java观察者模式的理解,不住之处还望大家指出。
更多安卓相关信息,请扫码关注微信公众号:lifeAndroid
观察者模式所涉及的角色有以下四个:
抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个集合(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,在我们安卓开发中,我通常把这个抽象主题角色定义为application。
具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。其实就是执行通知观察者更新状态的角色。
抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,这个接口叫做更新接口。
具体观察者(ConcreteObserver)角色:存储与主题的状态自恰的状态,实现抽象观察者角色所要求的更新接口,在相应的抽象方法中去进行必要的操作,以便使本身的状态与主题的状态相协调。
抽象主题角色:
public class MyApplication extends Application{ private static MyApplication instance = null; private List<EcgObserver> observers = new ArrayList<EcgObserver>(); @Override public void onCreate() { super.onCreate(); instance=this; } /** * 静态工厂方法 */ public synchronized static MyApplication getInstance() { return instance; } /** * 添加 * @param ecg */ public void addEcgObserver(EcgObserver ecg) { if (ecg != null) { observers.clear();//先行全部清除 observers.add(ecg); } } /** * 删除 * @param ecg */ public void delEcgObserver(EcgObserver ecg) { if (ecg != null) { observers.remove(ecg); } } /** * 刷新状态 * @param state * @param msg */ public void notifyEcgState(int state, String msg) { try { for (EcgObserver ecg : observers) { ecg.onEcgStateChange(state, msg); } } catch (Exception ex) { ex.printStackTrace(); } } }
具体主题角色:
public class Test1 { public Test1() { super(); } /** * 通知更新 */ private void notifyUpdate(){ MyApplication.getInstance().notifyEcgState(1,"我的状态改变了!"); } }
抽象观察者角色:
public interface EcgObserver { void onEcgStateChange(int state, String msg); }
具体观察者角色:
public class MainActivity extends Activity implements EcgObserver { @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HEApplication app = HEApplication.getInstance(); app.addEcgObserver(this); } @Override public void onEcgStateChange(int state, String msg) { // 此处做需要更新的一些操作 } }
如果我们想要控制每次通知更新的时候,都是在我们想要的activity中去更新,而其他的activity不更新,这样我们只需要,在进入这个activity中调用addEcgObserver(EcgObserverecg);退出的时候调用delEcgObserver(EcgObserverecg),这样就OK啦!
以上就是我对java观察者模式的理解,不住之处还望大家指出。
更多安卓相关信息,请扫码关注微信公众号:lifeAndroid
相关文章推荐
- Java设计模式之观察者模式的应用--简单的事件通知工具
- 【 应用以及剖析】之 java.util.Observer 观察者模式实现
- java设计模式--观察者模式应用场景
- 观察者模式的Java实现及应用
- 设计模式应用与发展之观察者模式(java)
- 安卓开发观察者模式应用-一个service通知多个activity更新ui的实现
- 使用java自带观察者模式的DOME(股票应用) 并给出单继承和Observable冲突的解决办法
- 观察者模式在安卓中的应用
- java中的观察者模式在android主题切换或者数据刷新时的应用
- 观察者模式在Java中的应用,附代码
- Decorator模式在java.io包中的应用
- 在Java中应用设计模式--Factory Method
- Java中的观察者模式(Observer)
- JAVA中数据库操作的各种方式与设计模式的应用
- 在Java中应用设计模式--Singleton
- JAVA操作数据库方式与设计模式应用
- 在Java中应用设计模式--Singleton
- Java设计模式之Observer 观察者模式
- 在Java中应用设计模式--Factory Method
- JAVA中数据库操作的各种方式与设计模式的应用