代理模式开发实践

代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。

写一个缓存代理计算价格的例子:

var prices = function() {
  console.log('开始计算总价');
  var a = 0;
  for (var i = 0, l = arguments.length; i < l; i++) {
    a = a + arguments[i];
  }
  return a;
}

var proxyCalculation = (function() {
  var cache = {};
  return function() {
    var args = Array.prototype.join.call(arguments, ',');
    if (args in cache) {
      return cache[args];
    }
    return cache[args] = prices.apply(this, arguments);
  }
})();

console.log(proxyCalculation(10, 20));
console.log(proxyCalculation(10, 20));
// 开始计算总价
// 30
// 30

上面的例子用proxyCalculation来代理prices,把缓存功能设置在proxyCalculation中。当第二次价格列表一样的时候,这样就可以快速的得到结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • javascript设计模式与开发实践 设计模式 每个设计模式我们需要从三点问题入手: 定义 作用 用法与实现 单...
    穿牛仔裤的蚊子阅读 4,314评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • 去年有段时间,我们的网站访问量经历了以下三个阶段: 上线第一个月:迅速增长 2-4个月:保持平稳 5-6个月:访问...
    喵在野阅读 286评论 0 3
  • [不捡芝麻20171026学而思《书语者》D6]第6章,斩断束缚。彭彭举托尔斯泰寓言狗和骨头的例子,查各种书籍,敬...
    shinesky阅读 362评论 0 0
  • 胶装机里沸腾翻滚的浆糊 把我们黏在某个午后的邂逅 想起电梯里你说赞的爸爸 撒娇像骄傲一样自然 目光移向你不再稚嫩的...
    雨后的日子阅读 315评论 9 5