Observable学习

1. 观察者模式

定义

  • 又叫发布订阅模式
  • 一种一对多的关系
  • 让多个观察者对象(observer)同时监听某一个主题对象(subject),这个主题对象的状态发生变化时就会通知所有的观察者对象,使它们能够自动更新自己

优缺点

优点:

  • 支持简单的广播通信,自动通知所有已经订阅过的对象
  • 模块之间解耦

缺点:

  • 所有观察者都通知到会花费很多时间,如订阅redux的组件
  • 观察者和主题之间有循环依赖,会导致循环调用

注意:
在观察者模式中,通常情况下调用注册观察者后,会返回一个函数,用于移除监听

2. 迭代器模式

定义

  • 又叫游标模式
  • 提供一种方法顺序访问一个聚合对象中的每个元素,而又不需要暴露该对象的内部表示

优缺点

优点:

  • 简化了遍历方式,对于hash表来说,支持迭代器模式后,遍历方便,如Map的for of迭代
  • 封装性良好,用户只需要得到迭代器就可以遍历,而不用去关系遍历算法

缺点:

  • 遍历过程是一个单向且不可逆的遍历

示例

let arr = ['a', 'b', 'c'];
let iter = arr[Symbol.iterator]();
iter.next();
// {value: 'a', done: false}

你可能感兴趣的:(Observable学习)