装饰者模式的由来

装饰者模式的由来

ID:40313269

大小:403.50 KB

页数:5页

时间:2019-07-30

装饰者模式的由来_第1页
装饰者模式的由来_第2页
装饰者模式的由来_第3页
装饰者模式的由来_第4页
装饰者模式的由来_第5页
资源描述:

《装饰者模式的由来》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、软件英才网软件行业驰名招聘网站装饰者模式的由来来自何静媛的博客举个例子来说:星巴克咖啡订单管理系统如下图:      Beverage是所有饮料的基类;cost()是抽象方法,所有子类都需要定义它们自己的cost()实现来返回特定饮料的价钱有需要请联系我们软件英才网软件行业驰名招聘网站除了咖啡以外,星巴克还提供丰富的调味品,比如:炼乳、巧克力、砂糖、牛奶等,而且这些调味品也是要单独按份收费的,所以调味品也是订单系统中重要的一部分。于是,考虑到调味品的管理,又有了下面这样的类结构:      这样的结构肯定是有问题,因为以后随便增加一种调味品,继承于Beverage的子类

2、还会翻倍!于是又有了另一种方案有需要请联系我们软件英才网软件行业驰名招聘网站        首先在基类里增加了表示是否包含特定调味品的布尔变量,如milk,soy等,然后提供了一些has(get)和set方法来设置这些布尔值;其次在Beverage类里实现cost()方法来计算调味品的价钱。所有咖啡子类将仍然覆盖cost()方法,只是这次它们需要同时调用基类的cost()方法,以便获得咖啡加上调味品后的总价。下面我们再来增加子类有需要请联系我们软件英才网软件行业驰名招聘网站       基类的cost()方法将计算所有调味品的价钱(当然是只包括布尔值为true的调味品)

3、,子类里的cost()方法将扩展其功能,以包含特定类型饮料的价钱。按照上图来说,不同中的咖啡的价格是经常变动的,那么在实现cost()时即可重写,但是如果我想点一杯脱咖啡因咖啡(Decaf)外加三份炼乳和一份砂糖呢?这样就很难实现,因为布尔值的改变只会记住我是否加过某种调味品,不会记加过几次下面根据我们学的装饰者模式来设计:有需要请联系我们软件英才网软件行业驰名招聘网站      这样做的好处是,咖啡单独的还是咖啡,我将调味品都继承装饰类,咖啡和调味品可以任意组合。具体类和装饰类完全的分离,实现了松耦合。有需要请联系我们

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

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

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