Javascript设计模式学习笔记
一、单例模式
定义:保证只有一个类仅有一个实例,并提供一个访问它的全局访问点
线程池、全局缓存、浏览器中的windows对象
var getSingle = function (fn) {
var result;
return function () {
return result || (result = fn.apply(this, argumnets))
}
}
二、策略模式
定义:定义一些列的算法,把它们一个个封装起来,并且使它们可以相互替换
var strategies = {
"S": function (salary) {
return salary * 4
},
"A": function (salary) {
return salary * 3
},
"B": function (salary) {
return salary * 2
}
}
var calculateBonus = function (level, salary) {
return strategies[level][salary]
}
console.log(calculateBonus("S", 20000))
console.log(calculateBonus("A", 10000))
三、代理模式
定义:为一个对象提供一个代用品或占位符,以便控制对他的访问
保护代理:代理B帮助代理A过滤掉一些请求
虚拟代理:把一些开销很大的对象,延迟到真正需要它的时候再去创建
四、迭代器模式
定义:提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示
实现内部迭代器:
var each = function (ary, vallback) {
for(var i = 0; i < ary.length; i++) {
callback.call(ary[i], i, ary); // 把下标和元素当作参数传给callback函数
}
}
each([1, 2, 3], function (i, n) {
console.log(i, n)
})
五、发布-订阅模式(观察者模式)
定义:对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将收到通知。js中一般用事件模型来替代传统的发布订阅模式
六、命令模式
七、组合模式

浙公网安备 33010602011771号