装饰器(Decorator)模式
装饰器(Decorator)模式 装饰器(Decorator)模式是一种典型的结构型模式,主要用意是动态地为对象添加一些额外的功能。它提供了一个灵活的替代方案来继承子类,以扩展对象的功能。 在《Element of Reusable Object-Oriented Software》中,GOF 对装饰器模式的用意进行了概述:Decorator Pattern――Attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 使用装饰器模式的时机是当我们需要在不修改原有对象的情况下,动态地给对象添加一些额外的功能时。例如,在设计一个三明治小店的程序时,我们可能需要设计各种三明治的对象,其中包括带蔬菜、沙拉、咸肉等等的三明治。使用继承的方法来实现这些对象将会导致类库的急剧膨胀和维护的困难。 装饰器模式的四种角色分别是: 1. 被装饰对象(Bread):系统中最基本的元素,也是被装饰的元素。 2. 装饰对象(Pork、Mutton、Celery、Greengrocery):具体的一个成分,可以是猪肉、羊肉、青菜、芹菜等等。 3. 装饰器(Decorator):所有其它成分的父类,具有装饰功能的所有对象的父类。 4. 公共接口或抽象类(Ingredient):所有类的父类,包括它们共有的方法,一般为抽象类且方法都有默认的实现,也可以为接口。 使用装饰器模式可以避免类库的膨胀和维护的困难,并提供了一个灵活的替代方案来继承子类,以扩展对象的功能。 在设计三明治小店的程序时,我们可以使用装饰器模式来设计库,使得系统更加灵活和可维护。下面是我们的设计图: Ingredient(成分):所有类的父类,包括它们共有的方法,一般为抽象类且方法都有默认的实现,也可以为接口。 Bread(面包):系统中最基本的元素,也是被装饰的元素。 Decorator(装饰器):所有其它成分的父类,具有装饰功能的所有对象的父类。 Pork(猪肉):具体的一个成分,不过它作为装饰成分和面包搭配。 Mutton(羊肉):同上。 Celery(芹菜):同上。 Greengrocery(青菜):同上。 装饰器模式是一种非常实用的设计模式,在软件设计中可以广泛地应用于解决类库膨胀和维护的困难问题。
剩余6页未读,继续阅读
- 猿哥2020-05-26东西不算多,对于初学还行
- dy7152714242014-12-22....额,归类的还挺详细的.!
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
- 操作系统实验ucore lab3
- DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题 下面我将对程序进行详