美文网首页
十三、模式

十三、模式

作者: 懒羊羊3号 | 来源:发表于2019-04-09 14:58 被阅读0次

1、用Reflect实现观察者模式

const person = observable({  // persion观察目标
  name: '张三',
  age: 20
});

function print() {
  console.log(`${person.name}, ${person.age}`)
}

observe(print);  //print观察者
person.name = '李四';
// 输出
// 李四, 20

const queuedObservers = new Set();  // set集合

const observe = fn => queuedObservers.add(fn);  //所有函数都放到集合
const observable = obj => new Proxy(obj, {set});  //Proxy代理

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

相关文章

  • 十三、模式

    1、用Reflect实现观察者模式

  • 二十三种设计模式包括工厂模式、建造者模式、工厂方法模式、原始模型模式、单例模式、适配器模式、桥梁模式、合成模式、装...

  • 设计模式 总纲

    常用的设计模式有二十三种,除此之外,又不断发展出新的设计模式,我先总结一下常用的这二十三种。 一,设计模式的分类 ...

  • 设计模式(十三):策略模式

    01.模式定义 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择...

  • 设计模式(十三)组合模式

    定义 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象...

  • 设计模式(十三)-- 代理模式

    源代码GitHub源代码 1.本文目标 本文目标是为了让大家认识并理解代理模式 2.基本套路 定义:为其他对象提供...

  • 设计模式(十三):组合模式

    转载请注明作者和出处:https://www.jianshu.com/p/aa6f7b3edb00 运行平台: W...

  • 设计模式-组合模式《十三》

    何为组合模式 定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有...

  • 设计模式(十三):策略模式

    定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 策略模式(Strategy Pattern) 主...

  • 设计模式(十三)-命令模式

    命令模式 命令模式是一种数据驱动的设计模式,它属于行为模式,请求以命令的形式包裹在对象中,并传给调用对象,调用对象...

网友评论

      本文标题:十三、模式

      本文链接:https://www.haomeiwen.com/subject/dkngyqtx.html