Observable & Observer 既是可监听序列也是观察者

Observable & Observer 既是可监听序列也是观察者 - 图1

在我们所遇到的事物中,有一部分非常特别。它们既是可监听序列也是观察者

例如:textField的当前文本。它可以看成是由用户输入,而产生的一个文本序列。也可以是由外部文本序列,来控制当前显示内容的观察者

  1. // 作为可监听序列
  2. let observable = textField.rx.text
  3. observable.subscribe(onNext: { text in show(text: text) })
  1. // 作为观察者
  2. let observer = textField.rx.text
  3. let text: Observable<String?> = ...
  4. text.bind(to: observer)

有许多 UI 控件都存在这种特性,例如:switch的开关状态,segmentedControl的选中索引号,datePicker的选中日期等等。

参考

另外,框架里面定义了一些辅助类型,它们既是可监听序列也是观察者。如果你能合适的应用这些辅助类型,它们就可以帮助你更准确的描述事物的特征: