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的强项,但是递归的思想却值得我们去深究。

  • 相关阅读:
    【题解】NOIP2016换教室
    【题解】平面最近点对(加强版)
    [atcoder002E] Candy Piles [博弈论]
    [AGC002D] Stamp Rally [并查集+整体二分]
    [ACG001E] BBQ hard [dp]
    [BJOI2006][bzoj1001] 狼抓兔子 [最小割]
    [usaco jan 09] 安全路径 travel [最短路径树]
    [usaco jan 09] 气象牛 baric [dp]
    [poj1741] tree [点分治]
    [NOI2009] 植物大战僵尸 [网络流]
  • 原文地址:https://www.cnblogs.com/fengshuzi/p/3517691.html
Copyright © 2011-2022 走看看