zoukankan      html  css  js  c++  java
  • 装饰器模式

     1 function slow(x) {
     2   // 这里可能会有重负载的 CPU 密集型工作
     3   alert(`Called with ${x}`);
     4   return x;
     5 }
     6 
     7 function cachingDecorator(func) {
     8   let cache = new Map();
     9 
    10   return function(x) {
    11     if (cache.has(x)) {    // 如果缓存中有对应的结果
    12       return cache.get(x); // 从缓存中读取结果
    13     }
    14 
    15     let result = func(x);  // 否则就调用 func
    16 
    17     cache.set(x, result);  // 然后将结果缓存(记住)下来
    18     return result;
    19   };
    20 }
    21 
    22 slow = cachingDecorator(slow);
    23 
    24 alert( slow(1) ); // slow(1) 被缓存下来了
    25 alert( "Again: " + slow(1) ); // 一样的
    26 
    27 alert( slow(2) ); // slow(2) 被缓存下来了
    28 alert( "Again: " + slow(2) ); // 和前面一行结果相同

    slow函数:显示一条信息并返回一个数字x

    装饰器函数接收一个函数作为参数

    定义一个Map对象cache

    cache.has(x)     x是键,如果存在返回true

    cache.get(x)      通过键返回值

    func(x)               表面上是“作为形参的函数”被调用了,实际上就是实参函数被调用了,这里传入的是slow,slow函数显示一条信息并返回x,用一个变量result将slow函数返回的x接收住。

  • 相关阅读:
    Zookeeper 选举机制
    Hadoop Yarn任务调度器
    Hadoop Yarn工作机制 Job提交流程
    Hadoop 切片机制
    Hadoop MapReduce工作流程
    Hadoop HDFS读写数据流程
    数据仓库 拉链表
    高动态范围照片*5
    Java实现的窗口计算器
    拍摄制作星轨拖尾视频 之 前期拍摄
  • 原文地址:https://www.cnblogs.com/flyover/p/14151332.html
Copyright © 2011-2022 走看看