zoukankan      html  css  js  c++  java
  • JavaScript 设计模式-装饰器模式

    装饰器模式 (我更倾向于叫 解耦模式)

    • 在继承(extends)没有语法上的实现之前常用
    • 在不改变原来的结构和功能基础上,动态装饰一些针对特别场景所适用的方法或属性,即添加一些新功能以增强它的某种能力
    • 原有方法维持不变,在原有方法上再挂载其他方法来满足现有需求;
    • 函数的解耦,将函数拆分成多个可复用的函数,再将拆分出来的函数挂载到某个函数上,
    • 实现相同的效果但增强了复用性。比如多孔插座,机车改装
    const Man = function () {
      this.run = function () {
        console.info('跑步.')
      }
    }
    
    const Decorator = function (old) {
      this.oldAbility = old.run
    
      this.fly = function () {
        console.info('飞行')
      }
    
      this.newAbility = function () {
        this.oldAbility()
        this.fly()
      }
    }
    
    const man = new Man()
    
    const superMan = new Decorator(man)
    superMan.newAbility()
    

    装饰器模式(使用类的继承的方式)

    class SuperMan extends Man {
      fly() {
        console.info('I can fly.')
      }
      newAbility() {
        super.run()
        this.fly()
      }
    }
    
    const superMan = new SuperMan()
    superMan.run()
    
    Keep learning
  • 相关阅读:
    Out of Hay POJ
    Sum Problem hdu 1001
    N! hdu 1042
    线性表的链式表示和实现(插入删除建空合并)
    NYOJ 1007
    NYOJ 954
    NYOJ 998
    NYOJ 455
    NYOJ 975
    数据结构复习0---线性表
  • 原文地址:https://www.cnblogs.com/leslie1943/p/13510947.html
Copyright © 2011-2022 走看看