1、响应式编程思想
概念介绍
响应式编程是一种面向数据流和变化传播的编程范式
数据流:只能以事先规定好的顺序被读取一次的数据的一个序列
变化传播:类似观察者模式,变化了要通知别人
编程范式:计算机编程的基本风格或典范模式
实例讲解
数据流是什么?
1、在计算机中是数据
2、在现实中可以是任意对象组成的有顺序的队列
3、就像看电影进场一样,一个接一个的检票
何为变化传播?
饭店吃饭(点菜的变化->下单的变化->做菜的变化)
What is 编程范式?
就像做饭,有炒、烤、煮等等
终结案例
工厂流水线
数据流----->在履带上运送的要加工的物品
变换传播----->把前一个环节的加工结果传到下一个环节
编程范式------>每种物品的加工方式不同,流水线就不同
2、RxJava基本元素
简单介绍及回顾RxJava
RxJava简介
A library for composing asynchronous and event-based programs by using observable sequences.
asynchronous
1. 异步的,RxJava是一个异步的库
2. 基于回调的
event-based
1. 基于事件的
2. 事件分发的库,消息传递的库
RxJava1五大元素
Observable
1. 观察得到的--------被观察者
2. 通过Observable创建一个可观察的序列(create方法)
3. 通过Subscribe去注册一个观察者
Observer
1. 用于接受数据------观察者
2. 作为Observable的Subscribe方法的参数
Subscription
1. 订阅,用于描述被观察者和观察者之间的关系
2. 取消订阅和获取订阅的状态
OnSubscribe
1. 当订阅时会触发此接口回调
2. 在Observable内部,实际作用是向订阅者发送数据
Subscribe-----------------订阅
1. 实现了Observer和Subscription
2. 只有自己才能阻止自己
背压概念
1. 异步环境下产生的问题
2. 发送和处理速度不统一
3. 是一种流速控制解决策略
RxJava2无背压五大元素
Observable
1. 观察得到的--------被观察者,不支持背压
2. 通过Observable创建一个可观察的序列(create方法)
3. 通过Subscribe去注册一个观察者
Observer
1. 用于接受数据------观察者
2. 作为Observable的Subscribe方法的参数
Disposable
1. 和RxJava1的Subscription的作用相当
2. 取消订阅和获取订阅的状态
ObservableOnSubscribe
1. 当订阅时会触发此接口回调
2. 在Observable内部,实际作用是向订阅者发送数据
Emitter
1. 一个发射数据的接口,和Observer的方法类似
2. 本质是对Observer和Subscribe的包装
RxJava2有背压五大元素
Flowable
1. 易流动---------被观察者,支持背压
2. 通过Flowable创建一个可观察的序列(create方法)
3. 通过Subscribe去注册一个观察者
Subscribe
1. 一个单独接口,和Observer的方法类似
2. 作为Flowable的Subscribe方法的参数
Subscription
1. 订阅,与RxJava1的有所不同
2. 支持背压,有用于背压的request方法
FlowableOnSubscribe
1. 当订阅时会触发此接口回调
2. 在Flowable内部,实际作用是向观察者发射数据
Emitter
1. 一个发射数据的接口,和Observer的方法类似
2. 本质是对Observer和Subscribe的包装