zoukankan      html  css  js  c++  java
  • Javascript设计模式-----装饰者模式

    装饰者模式的主要功能就是动态的将责任附加到对象上,而由于javascript的动态特性,为javascript函数添加新的职责将变得非常容易

    一、概念

    装饰者提供比继承更有弹性的替代方案。 装饰者用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。

    装饰者通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。

    二、实例

     1 function Beverage()
     2 {
     3     this.description="Unknown Beverage";
     4     this.cost=function()
     5     {
     6         return 0;
     7     }
     8 }
     9 
    10 //饮料
    11 function Expresso(beverage)
    12 {
    13     this.description="Expresso";
    14     this.cost=function()
    15     {
    16         return 1+beverage.cost();
    17     }
    18 }
    19 
    20 //饮料
    21 function HouseBlend(beverage)
    22 {
    23     this.description="HouseBlend";
    24     this.cost=function()
    25     {
    26         return 8+beverage.cost();
    27     }
    28 }
    29 //调料
    30 function   Mocha(beverage)
    31 {
    32     this.description="Mocha";
    33     this.cost=function()
    34     {
    35         return 2+beverage.cost(); 
    36     }
    37 
    38 }
    39 var mybeverage=new Mocha(new HouseBlend(new Beverage()));
    40 console.log("共花了¥",mybeverage.cost());

    由代码可知函数可通过递归不断的给对象beberage添加行为,个人以为装饰者模式在javascript中比较少用,毕竟给对象动态地添加行为本来就是javascript的强项,但是递归的思想却值得我们去深究。

  • 相关阅读:
    基站选址(编程之美2015资格赛)
    2月29日(编程之美2015资格赛)
    跳马
    电子老鼠闯迷宫
    解决按钮重复提交 unbind+bind+setTimeout
    XMLHttpRequest 中 blob类型数据转text
    ExtJs之列表(grid)
    ExtJs之组件(window)
    ExtJs基础
    问题与成长
  • 原文地址:https://www.cnblogs.com/fengshuzi/p/3517691.html
Copyright © 2011-2022 走看看