zoukankan      html  css  js  c++  java
  • 设计模式之结构型装饰者模式

    在不改变原对象的基础上,通过对其进行包装扩展(添加属性或者方法)使原有对象可以满足用户的更复杂需求。
    静止是相对的,运动是绝对的,所以没有一成不变的需求。在实际项目开发中需求总在不断变化,当原有的功能已经不能满足用户的需求时,我们要做的就是在这个基础上添砖加瓦,设置新功能和属性来满足用户提出的需求,这就是装饰者模式要做的。
    装饰者模式对对象的扩展是一种良性扩展,不用了解其具体实现,只是在外部进行了一次封装扩展。

    // 装饰者
    var decorator = function(input, fn) {
      // 获取事件源
      var input = document.getElementById(input);
      // 若事件源已经绑定事件
      if(typeof input.onclick === 'function') {
        // 缓存事件源原有回调函数
        var oldClickFn = input.onclick;
        // 为事件源定义新的事件
        input.onclick = function() {
          // 事件源原有回调函数
          oldClickFn();
          // 执行事件源新增回调函数
          fn();
        }
      } else {
        input.onclick = fn;
      }
    }
  • 相关阅读:
    OLEDB 枚举数据源
    OLEDB 调用存储过程
    OLEDB 参数化查询
    多结果集IMultipleResult接口
    使用pyh生成HTML文档
    数据更新接口与延迟更新
    SQL语句执行与结果集的获取
    事务对象和命令对象
    DNS练习之反向解析
    DNS练习之正向解析
  • 原文地址:https://www.cnblogs.com/camille666/p/design_pattern_struct_decorator.html
Copyright © 2011-2022 走看看