设计模式
zpf吗
这个作者很懒,什么都没留下…
展开
-
javaScript发布订阅模式
目录概念示例取消订阅概念发布-订阅模式还可称为观察者模式,它定义对象之间一对多的依赖关系,当一个属性发生改变时,所有依赖它的地方都会得到通知变化。示例let event = { list: [], // 缓存 addEvent: function( key, fn) { // 添加订阅者 if( !this.list[key] ){ this.list[key] = []; } this.list[key].push(fn) }, addtr原创 2021-04-13 10:12:55 · 113 阅读 · 0 评论 -
javaScript迭代器模式
目录概念示例1.内部迭代器2.外部迭代器概念迭代器模式是指提供一种方法顺序访问一个对象中的各个元素,又不需要暴露该对象的内部。示例1.内部迭代器var each = function(arr, callback) { for(let i=0,l = arr.length;i < l;i++) { callback.call(arr[i], i, arr[i]) }};each([1,2,3,4],function( i, n) { console.log( i, n)})原创 2021-04-12 15:25:15 · 79 阅读 · 0 评论 -
javaScript代理模式
目录概念示例缓存代理概念当不方便直接访问本体对象时,提供一个替身对象来代替直接访问本体对象,替身对象相当于中间路由,访问替身对象时,在替身对象中做一些处理操作,再由替身对象代理访问本体对象。示例var _A = { aFun: function( txt ){ _B.bFun(txt) // 让 _B 代理发送 }}var _B = { bFun: function( txt ){ console.log('将消息代理给_C') _C.cFun(txt) // }}原创 2021-04-06 19:15:30 · 49 阅读 · 0 评论 -
javascript策略模式
目录概念示例概念解决一个问题时,定义不同的方法,将每个方法封装起来,并使它们可以互相替换示例同常,我们会遇到这种情况,需要根据不同的要求走不同的分支,此时会发现一堆 if else,且后期很难维护,这时策略模式就时很好的解决方式,废话不BB,上代码var funList = { fun1: function(val){ return val + 1 }, fun2: function(val){ return val + 2 }, fun3: function(val)原创 2021-04-05 22:26:14 · 45 阅读 · 0 评论 -
javaScript单例模式
目录概念实例概念保证一个 class 仅有一个实例,并提供一个可以访问到的全局访问点,但在javascript 中是没有 class 的概念,需要使用全局变量实现。实例var instance // 声明一个全局变量,相当于 classvar obj = { setName: function( name ){ // 设置 name this.name = name }, getName: function() { // 获取 name console.log(this.n原创 2021-04-05 22:09:24 · 254 阅读 · 0 评论