装饰模式decorator

作用:

-动态的为一个对象增加新功能

-装饰模式是一种用于代替继承的技术,无需通过增加子类就能扩展对象的新功能,适用对象的组合关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀

角色:

-Component抽象构件角色:真实对象和装饰对象具有相同的接口,这样,客户端对象就能够以与真实对象相同的方式与装饰对象进行交互

-ConcreteComponent具体构件角色(真实对象):被装饰的角色

-Decorator装饰角色:实现相同接口,并持有一个抽象构件的引用,这样既可以完成客户端的所有请求,又可以增添新的功能

-ConcreteDecorator具体装饰角色:负责给构建对象增加新的责任

装饰模式和桥接模式的区别:

两个模式都是为了解决过多子类对象问题,但桥接模式的诱因是多个维度多个原因导致的多重继承,装饰模式是为了增加新的功能

例子:跑车

设计模式之GOF23装饰模式相关推荐

  1. 大话设计模式C++版——装饰模式

           女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...

  2. 【设计模式 03】装饰模式——俄罗斯套娃?

    装饰模式(俄罗斯套娃?) 装饰模式:动态的给某些对象添加额外的功能 参考: 简书 | 装饰模式 博客园 | 简说设计模式--装饰模式 博客园 | 装饰器模式 Decorator 结构型 设计模式 (十 ...

  3. 设计模式系列之装饰模式(Decorator Pattern)

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

  4. JAVA设计模式 之九 装饰模式

    装饰模式(装饰设计模式)详解 在现实生活中,常常需要对现有产品增加新的功能或美化其外观,如房子装修.相片加相框等. 在软件开发过程中,有时想用一些现存的组件.这些组件可能只是完成了一些核心功能.但在不 ...

  5. 设计模式之略见一斑(装饰模式decorator)

    标头:(引自设计模式) 为了扩展代码库,通常给它添加新类或者新方法.有时候,你也许不希望在运行时候使用新行为来组合对象.Interpreter模式允许你组合可执行对象,这个对象的行为可能变化会非常快. ...

  6. 简易理解设计模式之:装饰模式——穿衣服经典案例

    介绍: 装饰模式属于结构型模式.它动态地给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更加灵活. 类图: 装饰模式UML类图.png Component(抽象组件):接口或者抽象类,被装 ...

  7. 【C#设计模式】8.装饰模式(Decorator Pattern)【结构型】

    [C#设计模式]总目录-共23种 [C#设计模式]装饰模式(Decorator Pattern)[结构型] 前言 一.模式的详细介绍 1.1 动机(Motivate) 1.2 意图(Intent) 1 ...

  8. JAVA中的设计模式四(装饰模式)

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

  9. 设计模式03:装饰模式

    系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387 参考:https://blog.csdn.net/hnust_xie ...

  10. java中装潢模式_JAVA中的设计模式四(装饰模式)

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

最新文章

  1. 【学习笔记】16、常用内置函数(Built-in Functions)
  2. Git 索引文件(index file)
  3. javascript进阶教程第二章对象案例实战
  4. Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
  5. 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc
  6. linux 重复执行脚本,防止shell脚本重复执行的代码
  7. Java 蓝桥杯 字符串基本用法
  8. SQL Server 数据库原理与应用
  9. 如何在Java中获取系统属性?
  10. AJAX - 浏览器支持
  11. 数字图像处理(21): 图像金字塔(高斯金字塔 与 拉普拉斯金字塔)
  12. 【机器学习基石】感知机模型+PLA(二)
  13. grads 相关系数_气象绘图软件GrADS高级使用技巧
  14. bochs运行xp_bochs xp镜像
  15. Python参考文献
  16. 设计一个Dog类,包含名字,年龄,颜色三个属性
  17. 图片文件,图片文件流和BASE64加密字符串之间的转换,以及图片的BASE64加密字符串再jsp上如何显示
  18. 等保三级核心-主机安全
  19. php单链表检测有没有环,PHP 和 Go 实现环路链表检测
  20. 惯导运算中的常值国际单位制惯导中常用单位

热门文章

  1. 四大猛壳之一的VMProtect轻松保护你的程序
  2. DC guide ---3
  3. 今天中午还收到了,一条诈骗短信,说是中奖了
  4. 值得推荐的C/C++框架和库(转)
  5. 机器学习之K-means算法
  6. 自然辩证法 题目2
  7. 部分网站为什么上不去_天机SEO:分析网站收录与排名的重要因素
  8. 拓端tecdat:R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
  9. jQuery学习笔记02
  10. 微信小程序教程笔记6