软件设计模式ch装饰者模式.pptx
《软件设计模式ch装饰者模式.pptx》由会员分享,可在线阅读,更多相关《软件设计模式ch装饰者模式.pptx(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1页/共47页一二三四五六星巴兹咖啡星巴兹咖啡认识装饰者模式认识装饰者模式装饰者模式装饰者模式装饰饮料装饰饮料真实世界的装饰者:真实世界的装饰者:Java I/OJava I/O编写自己的编写自己的Java I/OJava I/O装饰者装饰者主要内容第2页/共47页一、星巴兹咖啡概况概况 饮料类饮料类 调整调整 (一)(二)(三)效果效果 (四)开放关闭原则开放关闭原则 (五)第3页/共47页星巴兹是以扩展迅速而闻名的咖啡店,其原始设计如下:(一)概况第4页/共47页(二)饮料类第5页/共47页很明显,设计了太多的类(二)饮料类第6页/共47页从Beverage类开始,添加实例变量(三)调整
2、第7页/共47页加入子类(三)调整第8页/共47页(三)调整第9页/共47页(四)效果第10页/共47页(四)效果第11页/共47页设计原则五:类应该对扩展开放,对修改关闭。(五)开放关闭原则第12页/共47页(五)开放关闭原则第13页/共47页二、认识装饰者模式思路思路 构造饮料订单构造饮料订单 (一)(二)第14页/共47页以饮料为主体,运行时以调料来“装饰”饮料,例如,顾客想要摩卡和奶泡深焙咖啡:取一个深焙咖啡对象以摩卡对象装饰它以奶泡对象装饰它调用cost()方法,并依赖委托将调料的价钱加上去。(一)思路第15页/共47页(二)构造饮料订单第16页/共47页(二)构造饮料订单第17页/
3、共47页(二)构造饮料订单第18页/共47页(二)构造饮料订单第19页/共47页三、装饰者模式定义定义 类图类图 缺点缺点 (一)(二)(三)第20页/共47页(一)定义装饰者模式:动态地将责任加到对象身上。如果要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。第21页/共47页(二)类图第22页/共47页(三)缺点有时在设计中加入大量的小类,变得不容易理解。有的客户端代码依赖于特定的类型(这是个比较糟糕的习惯,违反了“针对接口编程,而不是针对实现编程”的设计原则),当服务器端引入装饰者模式时,客户端就会出现状况。装饰者模式使得实例化组件的复杂度提升。第23页/共47页四、装饰饮料星巴兹饮
4、料星巴兹饮料 实现实现 (一)(二)第24页/共47页(一)星巴兹饮料第25页/共47页从Beverage类开始(二)实现第26页/共47页Beverage类很简单,下面来实现CondimentDecorator调料类(二)实现第27页/共47页编写饮料代码(二)实现第28页/共47页编写饮料代码(续)(二)实现第29页/共47页编写调料代码(二)实现第30页/共47页编写测试代码(二)实现第31页/共47页RUN(二)实现第32页/共47页(二)实现第33页/共47页五、真实世界的装饰者:Java I/O典型实例典型实例 装饰装饰java.iojava.io类类 (一)(二)第34页/共47
5、页(一)典型实例第35页/共47页(二)装饰java.io类第36页/共47页六、编写自己的Java I/O装饰者编写自己的编写自己的Java I/OJava I/O装饰者装饰者 测试新测试新的的Java I/OJava I/O装饰者装饰者 (一)(二)第37页/共47页(一)编写自己的Java I/O装饰者第38页/共47页(一)编写自己的Java I/O装饰者第39页/共47页(二)测试新的Java I/O装饰者第40页/共47页(二)测试新的Java I/O装饰者RUN第41页/共47页七、总结第42页/共47页AbstractionAbstractionEncapsulationEnc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 ch 装饰
限制150内