- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式装饰模式
www.ChinaSA.info www.ChinaSA.info Design Patterns 装饰模式 刘 伟 (Sunny) weiliu_china@126.com 大纲 装饰模式概述 装饰模式的结构与实现 装饰模式的应用实例 透明装饰模式与半透明装饰模式 装饰模式的优缺点与适用环境 装修前 装修后 装饰模式概述 现实生活中的“装饰”实例 装饰模式概述 装饰模式分析 可以在不改变一个对象本身功能的基础上给对象增加额外的新行为 是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系 引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩展原有类的功能 装饰模式概述 装饰模式的定义 对象结构型模式 装饰模式:动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。 Decorator Pattern: Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 装饰模式概述 装饰模式的定义 以对客户透明的方式动态地给一个对象附加上更多的责任 可以在不需要创建更多子类的情况下,让对象的功能得以扩展 装饰模式的结构与实现 装饰模式的结构 装饰模式的结构与实现 装饰模式的结构 装饰模式包含以下4个角色: Component(抽象构件) ConcreteComponent(具体构件) Decorator(抽象装饰类) ConcreteDecorator(具体装饰类) 装饰模式的结构与实现 装饰模式的实现 抽象构件类典型代码: abstract class Component { public abstract void Operation(); } 装饰模式的结构与实现 装饰模式的实现 具体构件类典型代码: class ConcreteComponent : Component { public override void Operation() { //基本功能实现 } } 装饰模式的结构与实现 装饰模式的实现 抽象装饰类典型代码: class Decorator : Component { private Component component; //维持一个对抽象构件对象的引用 //注入一个抽象构件类型的对象 public Decorator(Component component) { ponent = component; } public override void Operation() { component.Operation(); //调用原有业务方法 } } 装饰模式的结构与实现 装饰模式的实现 具体装饰类典型代码: class ConcreteDecorator : Decorator { public ConcreteDecorator(Component component) : base(component) { } public override void Operation() { base.Operation(); //调用原有业务方法 AddedBehavior(); //调用新增业务方法 } //新增业务方法 public void AddedBehavior() { //功能扩展 } } 装饰模式的应用实例 实例说明 某软件公司基于面向对象技术开发了一套图形界面构件库——VisualComponent,该构件库提供了大量基本构件,如窗体、文本框、列表框等,由于在使用该构件库时,用户经常要求定制一些特殊的显示效果,如带滚动条的窗体、带黑色边框的文本框、既带滚动条又带黑色边框的列表框等等,因此经常需要对该构件库进行扩展以增强其功能。 现使用装饰模式来设计该图形界面构件库。 装饰模式的应用实例 实例类图 图形界面构件库结构图 装饰模式的应用实例 实例代码 (1) VisualComponent:抽象界面构件类,充当抽象构件类 (2) Window:窗体类,充当具体构件类 (3) TextBox:文本框类,充当具体构件类 (4) ListBo
文档评论(0)