美文网首页
我和小芳的故事-代理模式

我和小芳的故事-代理模式

作者: 原型设计 | 来源:发表于2019-11-01 14:17 被阅读0次
    /**
     * javascripts 代理模式
     * 
     * 故事: 在一个很久远的山村里面,有一天,突然来了一位城市的美女和她的姐妹,美女叫:小芳,她的姐妹:翠花,我❤️上了小芳,我想把奶奶留给我祖传的项链送给小芳,我怕被拒绝心里难受,我就把项链交给她的好姐妹。
     * 分析: 四个对象,小芳、翠花、项链、我
     * @class Proxymodel
     */
    
     // ========================= 简单代理 ===============================
    
     class Necklace {
       constructor(){
         console.log('我是主人公的项链!')
       }
     }
    
    
     class Me {
       sendNecklace(target){
          target.acceptNecklace(new Necklace());
       }
     }
    
     class Cuihua {
      acceptNecklace(necklace){
        new Xiaofang().acceptNecklace(necklace);
      }
     }
    
     class Xiaofang {
      acceptNecklace(necklace){
        console.log('我很喜欢!')
      }
     }
    
    
    new Me().sendNecklace(new Cuihua());
    
     // ========================= 翠花告诉我,小芳心情好,表白几率大-----虚拟代理 ===============================
    
    class Necklace {
      constructor(){
        console.log('我是主人公的项链!')
      }
    }
    
    
    class Me {
      sendNecklace(target){
         target.acceptNecklace();
      }
    }
    
    class Cuihua {
     acceptNecklace(){
       new Xiaofang().listenMood(()=>{
        new Xiaofang().acceptNecklace(new Necklace());
       })
     }
    }
    
    class Xiaofang {
     acceptNecklace(necklace){
       console.log('我很喜欢!')
     }
     listenMood(fn){
      setTimeout(()=>{
        fn()
      },1000);
     }
    }
    
    
    new Me().sendNecklace(new Cuihua());
    
    
     // =========================  缓存代理 ===============================
    
    function mult(arg){
      let a= 1;
      for(let i = 0;i<arg.length;i++){
        a = a * arg[i];
      }
      return a;
    }
    
    const proxyMult = (function (){
      let cache = {};
      return function(...argu){
          if(argu in cache){
            return cache[argu];
          }
          return cache[argu] = mult.call(this,argu);
      }
    }());
    
    console.log(proxyMult(1,2,3));
    
    

    相关文章

      网友评论

          本文标题:我和小芳的故事-代理模式

          本文链接:https://www.haomeiwen.com/subject/gtifbctx.html