装饰者模式讲课讲稿.ppt
《装饰者模式讲课讲稿.ppt》由会员分享,可在线阅读,更多相关《装饰者模式讲课讲稿.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、装饰者模式第7章 设计模式实现1类爆炸调料的增加/删除调料价格的修改7.3 装饰者模式2第7章 设计模式实现2使用实例变量和继承,跟踪这些调料7.3 装饰者模式3第7章 设计模式实现27.3 装饰者模式4第7章 设计模式问题:实现cost方法7.3 装饰者模式5第7章 设计模式当哪些因素改变时会影响这个设计?调料价钱的改变会使我们更改现有代码。一旦出现新的调料,我们就需要加上新的方法,并改变超类中的cost()方法。以后可能会开发出新饮料,对于这些饮料而言(冰茶),某些调料可能并不适合,但是在这个设计方式中,Tea子类仍将继承那些不合适的方法,比如:hasWhip()。如何顾客想要双倍摩卡,怎
2、么办?7.3 装饰者模式6第7章 设计模式设计原则(Open-ClosedPrinciple)类应该对扩展开放,对修改关闭。我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。如能实现这样的目标,其好处在于:这样的设计具有弹性,可以应对改变,可以接受新的功能来应对改变的需求。如何让设计的每个部分都遵循开放-关闭原则?这通常是无法做到的。要让OO设计同时具有开放性和关闭性,又不修改现有的代码,需要花费许多时间和努力。一般来说,我们没有足够的精力把设计的每个部分都这么设计,这可能只是一种浪费。遵循开放-关闭原则,通常会引入新的抽象层次,增加代码的复杂度。你需要把注意力集中在设计
3、中最有可能改变的地方,然后应用开放-关闭原则。7.3 装饰者模式7第7章 设计模式星巴克咖啡订单管理系统使用装饰者模式以饮料(Beverage)为主体,然后在运行时以调料(Condiment)来装饰(decorate)饮料比如,顾客想要摩卡和奶泡深焙咖啡,那么:取出一个深焙咖啡(DarkRoast)对象以摩卡(Mocha)对象装饰它以奶泡(Whip)对象装饰它调用cost方法,并依赖委托(delegrate)将调料的价格加上去7.3 装饰者模式8第7章 设计模式1.以DarkRoast对象开始2.顾客需要摩卡(Mocha),所以建立一个Mocha对象,并用它将DarkRoast对象包起来7.3
4、 装饰者模式9第7章 设计模式3.顾客也想要奶泡(Whip),所以建立一个Whip装饰者,并用它将Mocha对象包起来7.3 装饰者模式10第7章 设计模式4.通过调用最外圈装饰者(Whip)的cost即可计算饮料价格。7.3 装饰者模式11第7章 设计模式“装饰者模式”特点装饰者和被装饰对象具有相同的超类型可以用一个或多个装饰者包装一个对象由于装饰者和被装饰对象有相同的超类型,所以在任何需要原始对象(被包装)的场合,都可以用装饰过的对象代替她装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的对象可以在任何时候被装饰,所以可以在运行时动态的、不限量的用需要的装饰者来装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 装饰 模式 讲课 讲稿
限制150内