欢迎来到天天文库
浏览记录
ID:49235203
大小:3.39 MB
页数:47页
时间:2020-02-02
《软件设计模式ch3 - 装饰者模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件设计方法及设计模式张聚礼副教授/系统分析师装饰者模式3一二三四五六星巴兹咖啡认识装饰者模式装饰者模式装饰饮料真实世界的装饰者:JavaI/O编写自己的JavaI/O装饰者主要内容一、星巴兹咖啡概况饮料类调整(一)(二)(三)效果(四)开放-关闭原则(五)星巴兹是以扩展迅速而闻名的咖啡店,其原始设计如下:(一)概况(二)饮料类很明显,设计了太多的类(二)饮料类从Beverage类开始,添加实例变量(三)调整加入子类(三)调整(三)调整(四)效果(四)效果设计原则五:类应该对扩展开放,对修改关闭。(五)开放-关闭原则(五)开放-关闭原则二、认识装饰者模式思
2、路构造饮料订单(一)(二)以饮料为主体,运行时以调料来“装饰”饮料,例如,顾客想要摩卡和奶泡深焙咖啡:取一个深焙咖啡对象以摩卡对象装饰它以奶泡对象装饰它调用cost()方法,并依赖委托将调料的价钱加上去。(一)思路(二)构造饮料订单(二)构造饮料订单(二)构造饮料订单(二)构造饮料订单三、装饰者模式定义类图缺点(一)(二)(三)(一)定义装饰者模式:动态地将责任加到对象身上。如果要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。(二)类图(三)缺点有时在设计中加入大量的小类,变得不容易理解。有的客户端代码依赖于特定的类型(这是个比较糟糕的习惯,违反了“
3、针对接口编程,而不是针对实现编程”的设计原则),当服务器端引入装饰者模式时,客户端就会出现状况。装饰者模式使得实例化组件的复杂度提升。四、装饰饮料星巴兹饮料实现(一)(二)(一)星巴兹饮料从Beverage类开始(二)实现Beverage类很简单,下面来实现CondimentDecorator调料类(二)实现编写饮料代码(二)实现编写饮料代码(续)(二)实现编写调料代码(二)实现编写测试代码(二)实现RUN(二)实现(二)实现五、真实世界的装饰者:JavaI/O典型实例装饰java.io类(一)(二)(一)典型实例(二)装饰java.io类六、编写自己的J
4、avaI/O装饰者编写自己的JavaI/O装饰者测试新的JavaI/O装饰者(一)(二)(一)编写自己的JavaI/O装饰者(一)编写自己的JavaI/O装饰者(二)测试新的JavaI/O装饰者(二)测试新的JavaI/O装饰者RUN七、总结AbstractionEncapsulationPolymorphismInheritanceEncapsulatewhatvaries.Favorcompositionoverinheritence.Programtointerfaces,notimplementations.Strategy-definesafam
5、ilyofalgorithms,encapsulateseachone,andmakestheminterchangeable.Strategyletsthealgorithmvaryindependentlyfromclientsthatuseit.总结OOBasicsOOPrinciplesOOPatterns1Observer-definesaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdateda
6、utomatically总结OOPatternsStriveforlooselycoupleddesignsbetweenobjectsthatinteract.OOPrinciples2Decorator-Attachadditionalresponsibilitiestoanobjectdynamically.Decoratorsprovideaflexiblealternativetosubclassingforextendingfunctionality.总结OOPatternsClassesshouldbeopenforextensionbutc
7、losedformodification.OOPrinciples3
此文档下载收益归作者所有