装饰器模式

在不改变其原有的结构和功能为对象添加新功能,装饰比继承更加灵活。
就像你有一把狙击枪它需要消音的功能,我们就可以装上一个消音器。要一个四倍镜就可以
装上四倍镜,然后是握把,枪架等等。可以把消音器、四倍镜、握把、枪架…相当于装饰器概念。

// 狙击枪class SniperRifle {// 枪配置configuration() {return `狙击枪体`}// 枪的综合战力fightingCapacity() {return 2000}};// 消音器class Silencer {constructor(parent) {this.parent = parent;}// 枪配置configuration() {return `${this.parent.configuration()}+消音器`}// 枪的综合战力fightingCapacity() {return this.parent.fightingCapacity() + 100}};// 四倍镜class Telescope {constructor(parent) {this.parent = parent;}// 枪配置configuration() {return `${this.parent.configuration()}+四倍镜`}// 枪的综合战力fightingCapacity() {return this.parent.fightingCapacity() + 120}}// ...// 这可以扩展很多装饰器// 要一把狙击枪let sniperRifle1 = new SniperRifle();console.log(sniperRifle1.configuration())console.log(sniperRifle1.fightingCapacity())// 要一把有消音器的狙击枪let sniperRifle2 = new Silencer(new SniperRifle)console.log(sniperRifle2.configuration())console.log(sniperRifle2.fightingCapacity())// 要一把有消音器加四倍的狙击枪let sniperRifle3 = new Telescope(new Silencer(new SniperRifle))console.log(sniperRifle3.configuration())console.log(sniperRifle3.fightingCapacity())

这样可以在原有的功能上添加功能而不用修改原来的代码了,自由灵活性就很高。

js设计模式-装饰器模式相关推荐

  1. JS设计模式——装饰器模式

    什么是装饰器模式? 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 实例 拿最近比 ...

  2. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  3. Go 设计模式 - 装饰器模式

    装饰模式使用对象组合的方式动态改变或增加对象行为.Go语言借助于匿名组合和非入侵式接口可以很方便实现装饰模式.使用匿名组合,在装饰器中不必显式定义转调原对象方法. 设计模式 装饰器模式 装饰器模式主要 ...

  4. Spring设计模式(装饰器模式)

    Spring设计模式(装饰器模式) 模式的定义: 装饰者模式定义: ​ 动态地为一个对象添加一些额外的职责,若要扩展一个对象的功能,装饰者提供了比继承更有弹性的替代方案. 模式的结构图 : 模式包含角 ...

  5. Java设计模式-装饰器模式 理论代码相结合

    继Java设计模式适配器模式后的装饰器模式来啦,让我们一起看看吧. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一 ...

  6. 设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装.简单来说,装饰器模式就是 ...

  7. PHP设计模式——装饰器模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 装饰器模式又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装 ...

  8. 设计模式-装饰器模式 C++

    一.简介 1.什么是装饰器模式 装饰器模式是结构型设计模式. 装饰器是现有类的一个包装,可以在不修改现有类且不增加子类的情况下扩展现有类. [注]可以实现向一个现有对象添加新的功能,同时又不改变其结构 ...

  9. 设计模式---装饰器模式(C++实现)

    装饰器模式(Decorator Pattern)允许向一个现有对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...

最新文章

  1. FPGA和DSP间基于SRIO的高速通信系统设计
  2. springmvc请求参数异常处理
  3. Python中os与sys两模块的区别
  4. 真正的取真实IP地址及利弊Asp.net
  5. 冷却水的循环方式有哪几种_关于钣金件常用的连接方式,你知道下列的哪几种...
  6. fadeToggle()
  7. 对NVM区的合理使用
  8. spring component-scan配置扫描多个包
  9. Python Re 模块超全解读
  10. 在什么场合里你会用到消息队列?
  11. 数控机床现场数据采集与边缘计算方案
  12. linux 下ssh下载文件命令
  13. 扩展欧几里得算法推导
  14. Widows Virtual PC 修改bios安装OEM xp
  15. 一些临时邮箱服务网站
  16. U盘安装ESXI 6.7,并使用U盘启动服务器
  17. Chrome 插件篇-Unsplash插件:浏览器背景桌面设置,漂亮的背景桌面插件,时时更新
  18. 银河麒麟安装达梦数据库
  19. EasyFlipViewPager,flutter教程
  20. u盘软件怎么安装linux,教你怎么使用u盘安装Linux平台

热门文章

  1. 事到如今已经不敢问的tcpdump的使用方法
  2. Object类及Objects类
  3. 有哪些网站值得用python爬虫获取很有价值的数据
  4. table文字水平垂直居中
  5. hg8245设置无线打印服务器,华为hg8245无线设置方法是什么?
  6. VisualBasic的历史
  7. C语言中memset函数详解
  8. python运维自动化-马哥教育官网-专业Linux培训班,Python培训机构
  9. events.js:167
  10. HTMLCSS案例—咖啡店(定位+布局+CSS3)