设计模式-6装饰者模式.ppt

设计模式-6装饰者模式.ppt

ID:49504266

大小:138.50 KB

页数:13页

时间:2020-02-06

设计模式-6装饰者模式.ppt_第1页
设计模式-6装饰者模式.ppt_第2页
设计模式-6装饰者模式.ppt_第3页
设计模式-6装饰者模式.ppt_第4页
设计模式-6装饰者模式.ppt_第5页
资源描述:

《设计模式-6装饰者模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计模式-装饰者模式假设一个饮料店抽象一个饮料类但是,就某种饮料来说可以要求在其中加入各种调料例如:奶,巧克力,糖等加入不同的调料,会形成不同名称的饮料这样饮料的数量将会很多,即继承于饮料父类的子类将会很多每个子类的cost()方法将计算出特定饮料加上调料的价钱这会造成维护的噩梦如果奶的价钱上涨如果新增一种调料现在要以饮料为主体运行时以调料来“装饰”(decorate)饮料定义装饰者模式publicclassDarkRoastextendsBeverage{publicDarkRoast(){description="DarkRoastCoffee";}publicdoub

2、lecost(){return.99;}}publicclassMochaextendsCondimentDecorator{Beveragebeverage;publicMocha(Beveragebeverage){this.beverage=beverage;}publicStringgetDescription(){returnbeverage.getDescription()+",Mocha";}publicdoublecost(){return.20+beverage.cost();}}publicclassStarbuzzCoffee{publicstatic

3、voidmain(Stringargs[]){Beveragebeverage=newEspresso();System.out.println(beverage.getDescription()+"$"+beverage.cost());Beveragebeverage2=newDarkRoast();beverage2=newMocha(beverage2);beverage2=newMocha(beverage2);beverage2=newWhip(beverage2);System.out.println(beverage2.getDescription()+"$

4、"+beverage2.cost());Beveragebeverage3=newHouseBlend();beverage3=newSoy(beverage3);beverage3=newMocha(beverage3);beverage3=newWhip(beverage3);System.out.println(beverage3.getDescription()+"$"+beverage3.cost());}}实例假设你需要打印发票salesticket,发票有抬头、正文和脚注,发票抬头可以是企事业单位,发票号等等,脚注也是一样,可能有很多不同种类的脚注需要打印。如

5、果发票格式固定那也就没必要继续讨论了,现在的问题是,不同的客户需要的发票或者收据的抬头或脚注,他们需要的条目是不一样的,有的需要著明单位,有的只需要发票号,但是脚注需要开票人,等等,对你来说跟现在的Web系统一样,客户的要求是动态;不过发票的正文是不会变化的,是固定的如果你的发票格式为:SalesTicketHeader1        SalesTicketBody        SalesTicketFooter1那么你可以这样去创建对象:newHeader1(newFooter1(newSalesTicket()));如果你的发票格式为:SalesTicketHead

6、er1        SalesTicketHeader2        SalesTicketBody        SalesTicketFooter1那么你可以这样去创建对象:newHeader1(newHeader2(newFooter1(newSalesTicket())));

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。