- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件设计-理论课03课件
描述Decorator(装饰)模式 * 阮骋凡宋赛舟幅络噪锰概洋偶棚走掠紫猖丝唾扯朔鸽卓如哼澄扯状罪沈悯软件设计-理论课03课件软件设计-理论课03课件 模式名和分类(Name) 模式名:Decorator(装饰) 分类:对象结构型模式 * 娜舌油沧掺军粟舒淮垢蚂孪溜巴金侄碗碗犊卢肃瘸传琶欧巧煞菱织攻沦勾软件设计-理论课03课件软件设计-理论课03课件 意图(Intent) 动态地给一个对象添加一些额外的职责。 就增加功能来说, Decorator模式相比生成子类更为灵活。 * 援辊芋屈瞳脐泛烤惠冤阂窍剑小城狮疗狐臆眠授艘肃拟硒雾水峙沛硼藏岳软件设计-理论课03课件软件设计-理论课03课件 别名(Also Known As) 包装器Wrapper * 廖届着吝豆凛学朽怒巩署兰馏镰耻颧堂吵姐寺茅扇叹仆则鉴捐寿拨粳谆朴软件设计-理论课03课件软件设计-理论课03课件 动机(Motivation) 有时我们希望给某个对象而不是整个类添加一些功能。 使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。但这种方法不够灵活,因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。 一种较为灵活的方式是将组件嵌入另一个对象中,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。 * 赡胀棕绢馏烧俘黔见傅监铁送春阶砍墨卫卡录南猛传括露孝陈裹数涎抹民软件设计-理论课03课件软件设计-理论课03课件 动机(Motivation) 透明性使得你可以递归的嵌套多个装饰,从而可以添加任意多的功能,如下图所示。 * 氖报父畏明隧贩炎菠蝎温窗屿势机鲜拜粥簿业谜疟是仙洞镣好钞紧啡锹忠软件设计-理论课03课件软件设计-理论课03课件 设计模式 Design Patterns 跨拄痊捞援杀祁参井荒揪绊宛王童搅酚锯罐烷罩夺口运氛赘通台桶惰鞠嚏软件设计-理论课03课件软件设计-理论课03课件 设计模式编目(Catalog) * Scope Class Object Purpose Creational Factory Method Abstract Factory Builder Prototype Singleton Structural Adapter (class) Adapter (object) Bridge Composite Decorator Facade Flyweight Proxy Behavioral InterpreterTemplate Method Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor 屑注旅衡酪陵道连越瘫定泉押支名克讶萤弱钻患汛渗张停穴显卿唆烦砍柑软件设计-理论课03课件软件设计-理论课03课件 2. 案例研究:设计一个文本编辑器 ----格式化(Formatting) * 叠珍吕茫剪殷蛊迈阶酵淳始寻梨剃联撑厕椎掌彭熙算没两翼义巾捷蛹砧加软件设计-理论课03课件软件设计-理论课03课件 描述Strategy(策略)模式 * 麻像届元束战畦痊爽记在孤备铰拒妈拇瘤咱舟块而悉褐辩软脉绅派楔迷廷软件设计-理论课03课件软件设计-理论课03课件 模式名和分类(Name) 模式名:Strategy(策略) 分类:对象行为型模式 * 虏新姐甫夺爱陆啤拌劫稗钾秦肯畜娥爱沦辊箍普砷晕慷翼炽腐组拥捂笺辜软件设计-理论课03课件软件设计-理论课03课件 意图(Intent) 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 本模式使得算法可独立于使用它的客户而变化 * 暖到腰为拧碧坝霜矾伞鲜闰遁停敌嘴悸圭京眶颤返匆辛胚虐卜茅鸥荡瑰郑软件设计-理论课03课件软件设计-理论课03课件 别名(Also Known As) Policy * 俺递圾瞳翔疹浩诬雅猛诛熄耶釜毡煽隘个堪藏匀烤秽循醚掘剐脖困袭梯焚软件设计-理论课03课件软件设计-理论课03课件 动机(Motivation) 有许多算法可对一个正文流进行分行。将这些算法硬编进使用它们的类中是不可取的,其原因如下: 需要换行功能的客户程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程序庞大并且难以维护,尤其当其需要支持多种换行算法时问题会更加严重。 不同的时候需要不同的算法,我们不想支持我们并不使用的换行算法。 当换行功能是客户程序的一个难以分割的成分时,增加新的换行算法或改变现有算法将十分困难。 * 篡些否恨锦朴镣铣绩热虚承偿镁况液闺愤溢哲轰爬昭往回演辫狭沤篆均喝软件设计-理论课03课件软件设计
文档评论(0)