android 观察者模式
Observable
package com.example.testjavademo;public abstract class Observable implements ObServableSource{@Overridepublic void subscribeObserver(ObServer obServer) {//把这个功能留给不同的Observable处理sbuscribleActual(obServer);}//模板方法protected abstract void sbuscribleActual(ObServer observer);//创建具体被观察者public static <T> Observable create(ObServableOnSubscrile<T> subscrile){return new ObServableCreate<T>(subscrile);}
}
ObServer
package com.example.testjavademo;public interface ObServer<T> {//接收消息 undate()void onNext(T t);//调用关联时调用void onSubscribe();//接收异常消息void onError();//接收消息完成void onComplete();
}
ObServableSource
package com.example.testjavademo;
//抽象被观察者
public interface ObServableSource {//订阅功能 绑定ObServable 与ObServer关联public void subscribeObserver(ObServer obServer);
}
ObServableOnSubscrile
package com.example.testjavademo;/*** 绑定发射器 被观察者和发射器分离了* @param <T>*/
public interface ObServableOnSubscrile <T>{void subscribe(Emitter<T> emitter);
}
Emitter
package com.example.testjavademo;/*** 给用户发送消息接口* @param <T>*/
public interface Emitter <T>{//接收消息 undate()void onNext(T t);//接收异常消息void onError();//接收消息完成void onComplete();
}
ObServableCreate
package com.example.testjavademo;/*** 具体被 观察者*/
public class ObServableCreate<T> extends Observable{ObServableOnSubscrile<T> subscrile;public ObServableCreate ( ObServableOnSubscrile<T> subscrile){this.subscrile=subscrile;}@Overrideprotected void sbuscribleActual(ObServer observer) {observer.onSubscribe();//创建发射器CreateEmitter createEmitter=new CreateEmitter(observer);subscrile.subscribe(createEmitter);}static final class CreateEmitter<T> implements Emitter<T>{final ObServer<T> obServer;CreateEmitter(ObServer<T> obServer) {this.obServer = obServer;}@Overridepublic void onNext(T t) {obServer.onNext(t);}@Overridepublic void onError() {obServer.onError();}@Overridepublic void onComplete() {obServer.onComplete();}}
}
MainActivity
package com.example.testjavademo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);test();}private void test() {Observable .create(new ObServableOnSubscrile<String>() {@Overridepublic void subscribe(Emitter<String> emitter) {emitter.onNext("大家好");}}).subscribeObserver(new ObServer<String>() {@Overridepublic void onNext(String s) {}@Overridepublic void onSubscribe() {}@Overridepublic void onError() {}@Overridepublic void onComplete() {}});}
}
android 观察者模式相关推荐
- android观察者模式例子,Android-Kotlin实现观察者模式的小案例
在日常的Android开发当中,我们肯定会遇到要使用观察者模式的场景.下面分享一下利用如何用Kotlin实现Android的交互代码. 源码 1.创建两个接口 /** * 类说明:观察者接口 * * ...
- android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式
介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...
- android观察者模式容器联动,观察者模式(触发联动)
0.提纲 目录: 1.举例:发起登录请求 2.Android Adapter 相关源代码分析 3.EventBus 相关源代码分析 4.观察者模式总结 需要查看其它设计模式描述可以查看我的文章< ...
- android观察者模式被观察者,Android的设计模式-观察者模式
前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: 1.定义 定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新. 2.介绍 观察 ...
- Android—用最简单的案例Demo带你分析解读:Android观察者模式
*/ public abstract class Service { /** 增加我要通知者,这里存入的是抽象(抽象包括抽象类或) @param iPhone */ public abstract v ...
- android开发笔记-知识点
1:Android Permission denied(不允许连接Socket) 错误 原因是: 需要访问到网络,所以,在AndroidManifest.xml中,需要进行如下配置: <use ...
- 渐进式web应用程序_渐进式Web应用程序:简介
如果您从事网站建设业务,那么您可能会越来越多地听到人们谈论渐进式Web应用程序 (PWA). 由Google开发的PWA在吸引用户方面具有网络的所有优势,以及用户可以从本地应用程序获得的速度和可靠性. ...
- Android设计模式-观察者模式
原文地址 http://blog.csdn.net/qq_25806863/article/details/69218968 观察者模式是一种使用频率非常高的设计模式,最常用的地方就是订阅-发布系统. ...
- Android设计模式系列(2)--SDK源码之观察者模式
观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下. 本文以AbstractCursor为例子,展开分析. 观察者模式,Observer Patt ...
最新文章
- The Innovation | Volume 2 Issue 2 正式出版
- 2018年终总结之AI领域开源框架汇总
- 【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )
- 读写EEPROM遇到的问题:16位地址的内容都是最后写入的数据。
- 44)PHP,多个数据库查询(我没试)
- python0表示剪刀_石头,纸,剪刀Python代码。帮助简化
- 无迹卡尔曼滤波器(UKF)
- Oracle作业job 没有自动调度起来
- 还在为保研和研究生毕业发愁吗?呐,给你推荐最近的几个保底的会议~
- VC++ DLL注入目标程序
- linux的视频格式转换软件,工具盘点:必备的Linux视频转换工具(1)
- 什么是servlet?有什么作用?
- 联想7x04服务器装系统,联想硬盘保护EDU7X的安装方法.doc
- 林子雨-2.3 面向对象编程基础
- 计算机服务怎么打开flash,快速讲解Win10自带的浏览器如何开启Adobe Flash?
- Java对接ChinaPay提现(公私钥方式)
- 重启计算机恢复出厂设置,windows7电脑恢复出厂设置的三种方法
- iOS 屏幕旋转监听
- 一辈子交186万五险一金!退休你能拿回多少?算完惊呆……
- SQL Server 导入.mdf和.ldf文件