美文网首页
装饰者模式

装饰者模式

作者: yongningfu | 来源:发表于2017-04-01 14:41 被阅读0次

    装饰者模式

    1. 符合开放关闭原则
    2. 装饰者模式和代理模式非常像,代理模式更加强调的是一种静态的关系,即一开始就确定了代理与本体的关系,
    3. 而装饰者模式更加强调的是,一种动态的关系, 如比如某个模块的功能写好了,想要动态的给这个模块添加一些功能,比如再这个模块函数后面添加一个log日志等
    4. 代理模式通常只是一层代理-本体,而装饰者模式经常形成一条长长的装饰链
    5. 装饰者模式也是包装器模式(wrapper)

    比如写个AOP

    //before也相当于wrapper 给目标函数加上一个before装饰
    Function.prototype.before = function(before) {
      var _this = this;
      return function(args) {
        before.apply(this, args);
        _this.apply(this, args);
      }
    }
    
    //给目标函数加上after装饰
    Function.prototype.after = function(after) {
      var _this = this;
      return function(args) {
        _this.apply(this, args);
        after.apply(this, args);
      }
    }
    
    function sendEmail() {
      console.log('sendEmail');
    }
    
    var wrapper = sendEmail.before(function() {console.log('check email')})
                           .after(function () {console.log('check response')})
                           .after(function() {console.log('logger')});
    
    wrapper();
    // check email
    // sendEmail
    // check response
    // logger
    

    相关文章

      网友评论

          本文标题:装饰者模式

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