js观察者模式

观察者模式就是,有一个 subject 对象,然后有很多 observers 观察者对象,当 subject 对象有变化的时候去通知 observer 对象即可。观察者模式通过抽象出一个 Subject 和多个观察者,减轻了它们之间的过度耦合。再说简单点就是利用回调函数,异步完成后调用传入的回调即可。假设如下代码:

getAddress().then(res => {
 const address = res.address;
 A.update(address)
 B.next(address)
 C.change(address)
})

如果多加一个模块D,就要去翻请求代码,把D模块补上,此时各个模块代码耦合严重,如果有变化,修改成本是比较高的,那么就要通过观察者模式进行优化了

const observer = [];

observer.push(A.update);
observer.push(B.next);
observer.push(C.change);
observer.push(D.init);
observer.push(E.buy);

getAddress().then((res) => {
  const address = res.address;
  observer.forEach((observer) => observer(address));
});

通过观察者模式我们将获取地址后的操作解耦了出来,未来有新增模块只需要注册观察者即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值