android观察者模式
来源:互联网 发布:linux复制命令 编辑:程序博客网 时间:2024/05/02 00:30
android设计模式学习笔记(何红辉,关爱民)
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能够组合而不是嵌套,从而避免开发者陷入回到的地狱。
1 0
- Android之观察者模式
- android观察者模式
- Android|Java观察者模式
- Android Observer观察者模式
- Android Observer观察者模式
- android观察者模式
- android 观察者模式
- android--观察者模式
- android 观察者模式解析
- Android 之 观察者模式
- Android观察者模式
- Android中的观察者模式
- Android 观察者模式
- Android 观察者模式
- android 观察者模式
- android 观察者模式
- android 观察者模式
- android自定义观察者模式
- chrome中h5新特性canvas的drawImg无法显示
- Codeforces 766 C Mahmoud and a Message (基础dp)
- 和凉席一起五天自学PHPcms---第一天phpcms的理解与安装
- 很有趣的STL初学资料
- JAVA性能分析之使用火焰图
- android观察者模式
- CSS:两栏布局,三栏布局
- Iterator ------迭代器
- android AP热点(wifi热点)开发
- UIDocumentInteractionController 文档交互控制器 pdf 游览
- 使用夜神模拟器调试HBuilder Android项目
- C# 单元测试EntityFramework中的DbFunctions中的函数
- VR系列——Oculus Publishing文档:七、常见问题
- C语言中的操作符优先级