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

  • 相关阅读:
    nginx的url重写[rewrite规则和参考]
    nginx虚拟主机配置
    redhat 5下源码安装nginx服务
    apache服务器参数设置
    java实现全排列
    自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)
    如何学习一门新语言
    2018 中印诗人分享会
    C语言细节注意
    C++ vector 多次删除第一个元素
  • 原文地址:https://www.cnblogs.com/fengshuzi/p/3517691.html
Copyright © 2011-2022 走看看