码迷,mamicode.com
首页 > 其他好文 > 详细

观察者模式

时间:2018-01-01 17:02:12      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:操作   java   fun   lan   new   get   key   简单实现   each   

下面,使用 Proxy 写一个观察者模式的最简单实现,即实现observableobserve这两个函数。思路是observable函数返回一个原始对象的 Proxy 代理,拦截赋值操作,触发充当观察者的各个函数。

const queuedObservers = new Set();

const observe = fn => queuedObservers.add(fn);
const observable = obj => new Proxy(obj, {set});

function set(target, key, value, receiver) {
  const result = Reflect.set(target, key, value, receiver);
  queuedObservers.forEach(observer => observer());
  return result;
}

上面代码中,先定义了一个Set集合,所有观察者函数都放进这个集合。然后,observable函数返回原始对象的代理,拦截赋值操作。拦截函数set之中,会自动执行所有观察者。

观察者模式

标签:操作   java   fun   lan   new   get   key   简单实现   each   

原文地址:https://www.cnblogs.com/justart/p/8167119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!