android观察者模式
2017-02-15 22:29
435 查看
android设计模式学习笔记(何红辉,关爱民)
代码如下:
1、观察者
2、观察者具体实现
3、被观察者
4、具体被观察者
测试代码
运行结果
它添加了三个缺少的功能:
生产者在没有更多数据可用时能够发出信号通知:onComplete()
生产者了生错误时了出信号通知:onError()事件
Rxjava Obsrvables能够组合而不是嵌套,从而避免开发者陷入回到的地狱。
1、观察者模式
1、Subject抽象主题
抽象主题,也就是被观察者(Observable)的角色,抽象主题角色把所以观察者对象保存到一个集合中,每个主题都可以有任意观察者的数量,抽象主题提供一个接口,可以增加和删除观察者对象。2、ConcreteSubject具体主题
具体主题,该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发出通知,具体主题以又叫具体被观察者。3、Observer抽象观察者
抽象观察者,它定义一个更新的接口,使得在得到主题的更改通知时更新自己。4、ConcreteObserver具体观察者
该角色实现抽象观察者角色定义的更新接口,以便在主题发生改变时更新自己的状态。代码如下:
1、观察者
public interface Watcher { void update(String str); }
2、观察者具体实现
public class TestWatcher implements Watcher { @Override public void update(String str) { System.out.println(str); } }
3、被观察者
/** * 被观察者 */ public interface Watched { void addWatcher(Watcher wacher); void removeWatcher(Watcher wacher); void notifyWatchers(String str); }
4、具体被观察者
package com.example.watcherdemo; import java.util.ArrayList; import java.util.List; /** * 具体被观察者 */ public class TestWatched implements Watched { private List<Watcher> list=new ArrayList<Watcher>(); @Override public void addWatcher(Watcher wacher) { list.add(wacher); } @Override public void removeWatcher(Watcher wacher) { list.remove(wacher); } @Override public void notifyWatchers(String str) { for(Watcher watcher:list){ watcher.update(str); } } }
测试代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //被观察者 Watched hitef = new TestWatched(); //观察者 Watcher watcher1 = new TestWatcher(); Watcher watcher2 = new TestWatcher(); Watcher watcher3 = new TestWatcher(); hitef.addWatcher(watcher1); hitef.addWatcher(watcher2); hitef.addWatcher(watcher3); //当被观察者小偷偷东西的时候,通知观察者,然后做出相应的事件处理。 hitef.notifyWatchers("小偷偷东西"); } }
运行结果
3、观察者与Rxjava
从纯java的观点看,Rxjava Observable类来自GOF观察者模式它添加了三个缺少的功能:
生产者在没有更多数据可用时能够发出信号通知:onComplete()
生产者了生错误时了出信号通知:onError()事件
Rxjava Obsrvables能够组合而不是嵌套,从而避免开发者陷入回到的地狱。
相关文章推荐
- Android中观察者模式的实现--第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇
- Android里的观察者模式应用
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android源码学习之观察者模式应用及优点介绍
- Android源码学习之观察者模式应用
- Android, BREW中Observer(观察者)模式的两种表现
- Android 中的监听器模式与观察者模式
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android 设计模式 之 观察者模式
- android观察者模式
- Android中观察者模式(Observable)的理解
- 浅学设计模式之观察者<Observer>模式及在android中的应用
- Android 中的监听器模式与观察者模式
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Android 设计模式 之 观察者模式
- Android中观察者模式的实现--第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇
- Android设计模式系列(2)--SDK源码之观察者模式
- Android 设计模式:(二)观察者模式 —— 让你的对象知悉现况
- 浅学设计模式之观察者<Observer>模式及在android中的应用 .
- Android设计模式-之观察者模式