javascript设计模式之装饰器模式

js的设计模式分为创建型模式,结构型模式和行为模式

结构模式描述了如何组合对象以提供新的功能。

装饰器模式是一种常见的结构型模式,我们可以以一个基础对象为基础,来给它加上若干个装饰对象以拓展其功能。

下面是示例代码:

首先我想给一颗圣诞树上装饰很多小东西,也就是大概实现这个方法:

var tree = {decorate:function (){console.log('make some decorates on the tree!');}
};tree.getDecorate('RedBall');
tree.getDecorate('Angle');
tree.getDecorate('BlueBall');tree.decorate();

我们需要给这个tree方法加一些装饰器,装饰器该怎么写呢?

tree.getDecorate = function (deco){tree[deco].prototype = this;return new tree[deco];
};tree.RedBall = function (){this.decorate = function (){this.RedBall.prototype.decorate();alert('add a redball on the tree!');}
};tree.BlueBall = function (){this.decorate = function (){this.BlueBall.prototype.decorate();alert('add a blueball on the tree!');}
};tree.Angle = function (){this.decorate = function (){this.Angle.prototype.decorate();alert('there is an anggle on the tree now!');}
};

写完装饰器,我们就可以将这些装饰器装到这课圣诞树上面了!

tree.getDecorate('RedBall');
tree.getDecorate('BlueBall');
tree.getDecorate('Angle');tree.decorate();

看看console的结果:

make some decorates on the tree!
add a redball on the tree!
add a blueball on the tree!
there is an anggle on the tree now!

javascript设计模式之装饰器模式(结构型模式)相关推荐

  1. 23种设计模式:(二)结构型模式

    根据北京尚学堂的视频所学习 结构型模式: 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类: 适配器模式.代理模式.桥接模式. 装饰模式.组合模式.外观模式. ...

  2. Decorator(装饰)--对象结构型模式

    Decorator(装饰)–对象结构型模式 一.意图 1.动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 二.动机 1.在某些情况下我们可能会&quo ...

  3. 设计模式初识(三)结构型模式(Structural Pattern)

    为什么要使用结构型模式 结构型模式关注点在于"如何组合对象/类",更关注类之间的组合关系: 类结构型模式关心类的组合,由多个类可以组合成一个更大的(继承): 对象结构型模式关心类与 ...

  4. .NET设计模式(15):结构型模式专题总结

    .NET设计模式(15):结构型模式专题总结 --探索设计模式系列之十五 Terrylee,2006年5月 摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模 ...

  5. 享元模式 - 结构型模式

    模式类型:     Flyweight   享元模式 - 结构型模式 意图:     The intent of this pattern is to use sharing to support a ...

  6. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★

    文章目录 一.七大设计原则 1.开闭原则 2.依赖倒置原则 3.单一职责原则 4.接口隔离原则 5.迪米特原则 6.里氏替换原则 7.合成复用原则 二.创建型模式 0.简单工厂模式 ( 不属于 GOF ...

  7. 详解23种设计模式(基于Java)—— 结构型模式(三 / 五)

    目录 3.结构型模式(7种) 3.1.代理模式 3.1.1.概述 3.1.2.结构 3.1.3.静态代理 3.1.4.JDK动态代理 3.1.5.CGLIB动态代理 3.1.6.三种代理的对比 3.1 ...

  8. 23种设计模式(第三章结构型模式7种)

    结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构.它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象. 由于组合关系或聚合关系比继承关系耦 ...

  9. Java设计模式之适配器模式(属于结构型模式)

    Java设计模式之适配器模式(结构型模式) 定义:将一个类的接口转换成客户希望的另外一个接口.Adaptor模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 模式中的角色: 目标接口(T ...

最新文章

  1. 拦截器获取请求参数post_SpringBoot拦截器如何获取http请求参数
  2. openerp学习笔记 domain 的应用
  3. Ubuntu 14.04 安装flash插件;安装Cairo-Dock; 美化为Mac
  4. CPS fact debug - Continuation-pass style
  5. 【HDU - 5917】Instability(规律,结论,Ramsey定理,知识点,tricks)
  6. 手把手带你写一个中断输入设备驱动
  7. 深入理解php 匿名函数和 Closure
  8. android 简单获取实时天气数据_绘图本身很简单但是获取数据很难
  9. FFTNTT数学解释
  10. FlightGear编译
  11. arm架构与体系结构
  12. python操作mysql批量插入
  13. MATLAB无法读取图片解决方法
  14. Web开发技术架构图
  15. github已有项目上添加并更新
  16. 公网Wiki站点搭建全流程攻略·小白向(含Parsoid和VisualEditor)
  17. 2019小程序创业如何把握正确方向
  18. WIN8 与WIN7的64位及32位 分别对Legacy BIOS+MBR和UEFI+GPT两种启动方式和分区架构下的安装可行性分析
  19. python代码实现, SIR 模型进行信息传播模拟
  20. nk.bin和nk.nb0

热门文章

  1. MATLAB | App Designer·我用MATLAB制作了一款LATEX公式实时编辑器
  2. 北京大学真的改考408了??为什么找不到?
  3. 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记
  4. 2023需求最大的8种编程语言排名
  5. android 蓝牙BLE
  6. 自定义安装简洁版Office2016
  7. CAD输出的HPGL格式时什么格式怎么旋转度数?
  8. 微信小程序如何从数组里取值_微信小程序获取各种数据值跟设置数据值
  9. FPGA数字信号处理(十九)Vivado CIC IP核实现
  10. 电脑可以连接wifi上不了网