虚拟代理
Lucy不用关心儿子怎么通知Jack去拿快递的,让儿子自己把要干啥跟dad说就好了。
// 虚拟代理
var lucy = {
receive: function () {
son.sayToDad();
}
}
var jack = {
take: function (what) {
console.log("take ", what);
}
}
var son = {
sayToDad: function () {
var express = "kuai di";
jack.take(express);
}
}
lucy.receive();
缓存代理
// 缓存代理
var mult = function () {
var result = 1;
var length = arguments.length;
for (var i = 0; i < length; i++) {
result *= arguments[i];
}
return result;
}
var plus = function () {
var result = 0;
var length = arguments.length;
for (var i = 0; i < length; i++) {
result += arguments[i];
}
return result;
}
var computeProxy = function (fn) {
var cache = {};
return function () {
var id = Array.prototype.join.call(arguments, ',');
if (cache[id]) {
return cache[id];
} else {
cache[id] = fn.apply(this, arguments);
return cache[id];
}
}
};
var mutlPorxy = computeProxy(mult);
var plusProxy = computeProxy(plus);
console.log(mutlPorxy(1, 2, 3, 4));
console.log(plusProxy(1, 2, 3, 4));
本文通过示例展示了JavaScript中两种常见的设计模式——虚拟代理和缓存代理的使用。虚拟代理用于简化沟通,例如Lucy通过儿子与Jack沟通取快递的过程。缓存代理则用于提高效率,避免重复计算,如示例中的`computeProxy`函数实现的多参数乘法和加法计算的缓存功能。这些模式在实际开发中可以有效提升代码质量和性能。
612

被折叠的 条评论
为什么被折叠?



