美文网首页
结构型模式之装饰

结构型模式之装饰

作者: 0爱上1 | 来源:发表于2018-04-26 14:57 被阅读10次

定义:

    用于在运行时修改或者扩展实例的行为。即对某一个对象的行为进行扩展,而不是对某一类对象的行为进行扩展(针对类的所有对象可以采用继承的方式)

优势:

    通过使用装饰模式,我们可以对某个类的某一个对象进行动态扩展。而不会影响该类的其他实例。

    而采用继承的方式会直接为类增加功能,导致子类数量膨胀。

   装饰模式不改变原类文件、不使用继承、可以动态地扩展类功能

UML类图:

1

代码实现:

    我们通过房子来描述这个装饰的过程

    1:盖一栋基本的房子

    2:给外墙上色

    3:安装家灯

待装饰的父接口:

1

    被装饰的具体对象:

2

装饰者抽象类:

3

具体的装饰者一:房屋刷颜色

4

具体的装饰者二:房屋装灯

5

测试类:

6

结果:

7

结语:

    可以发现,其实装饰者就是一个被装饰者,装饰的过程其实就是拿到被装饰者的实例引用,用装饰者改变被装饰者的行为或者扩展它的功能的过程。

记住该模式的重点是:运行时动态变化

提问:

继承与装饰者模式的区别?为什么不能用继承来增加被装饰者想要的功能呢?

1:继承的形式,需要子类继承我们的被装饰类,通过添加房子的子类来添加特定的颜色或者装饰灯。但是如果我们想要添加各种各样的颜色和装饰灯呢?就必须在房屋代码编写时就定义好各种各样的子类(如红色房屋,黄色房屋,绿色房屋,大灯房屋,小灯房屋...),而装饰模式并不需要逐个创建子类房屋,而是在运行时将需要装饰的房屋子类与特定装饰类联系即可。即:

运行时为独立对象装饰新的功能

相关文章

  • 结构型模式:装饰模式

    文章首发:结构型模式:装饰模式 七大结构型模式之四:装饰模式。 简介 姓名 :装饰模式 英文名 :Decorato...

  • 设计模式(1)工厂模式

    设计模式有 23 种,按大类分的化可以分为三类 创建型(如:工厂模式、单例模式、原型模式等) 结构模式型(如:装饰...

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计

    JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式 装饰器模式,又名装饰者模式。它的定义是“在不...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 常用的设计模式

    设计模式主要大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配...

  • iOS常用设计模式总结(一)

    设计模式大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配器模...

  • java23种设计模式

    创建型 抽象工厂模式工厂方法建造者模式原型模式单态模式 结构型 适配器模式桥接模式组合模式外观模式装饰者模式享元模...

  • 装饰模式

    个人博客http://www.milovetingting.cn 装饰模式 模式介绍 装饰模式也称为包装模式,结构...

网友评论

      本文标题:结构型模式之装饰

      本文链接:https://www.haomeiwen.com/subject/ntiplftx.html