JAVA Head First 系列 面向对象经典 StartBuzz课件.pptVIP

JAVA Head First 系列 面向对象经典 StartBuzz课件.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5. Starbuzz Coffee fee system * Constructing a drink order with Decorators-my third attempt The customer wants Mocha, so we create a Mocha object and wrap it around the DarkRoast. Mocha对象是个包装品。它的类型映射了它所包装的对象的类型。也就是说要把包装品设计成和要包装的类一样的类型。在此,就是Beverage。 因此Mocha也有Cost方法,并且通过多态,我们可以把任何添加了Mocha的Beverage仍然看作Beverage,因为Mocha本身也是Beverage。 5. Starbuzz Coffee fee system * Constructing a drink order with Decorators-my third attempt The customer also wants Whip, so we create a Whip decorator and wrap Mocha with it. Whip is a decorator, so it also mirrors DarkRoast’s type and includes a cost() method. So, a DarkRoast wrapped in Mocha and Whip is still a Beverage and we can do anything with it we can do with a DarkRoast, including call its cost() method. 5. Starbuzz Coffee fee system * Constructing a drink order with Decorators-my third attempt 现在顾客要结账: 我们通过调用最外层Decorator—Whip的方法Cost,此时由Whip代理计算它本身包装的对象的价格。一旦它得到一个计算结果,它会把自身的价格再加进去,这就是整个饮料的价格 5. Starbuzz Coffee fee system * Welcome to Starbuzz Coffee 问题描述 Starbuzz咖啡吧是在全球范围内迅速发展的一个著名的咖啡吧。因为它发展的很快,为了适应饮料消费量,它急需更新结账系统。 5. Starbuzz Coffee fee system * Welcome to Starbuzz Coffee 问题分析 Starbuzz Coffee卖的是饮料,无论何种咖啡,都是饮料的一种,因此,应该将各种咖啡抽象成一个超类,这样一些共同的代码可以写到超类中。 每种咖啡都应该有个描述它保存这该饮料的具体说明信息,以便顾客了解这种饮料。 每种咖啡都应该有计算价格的方法,以便用户结算 初步想法 对Starbuzz Coffee的各种饮料抽象出一个超类,命名为Beverage,所有饮料类都从之继承 Beverage中,描述信息应该作为一个属性,最好是private型的,命名为Description,这样可以通过设计一个getDescription()方法获得饮料的说明信息 计算价格方法定义为cost() 因为每种咖啡都有自己的价格计算方式,所以把cost()方法设计成抽象的,这样该方法的实现放到子类中。 5. Starbuzz Coffee fee system * Design: original design Description实例变量在每个子类中都要设置它的值,保存该饮料的具体说明信息,共有的部分,放到超类中定义 每个子类型负责实现自己的cost()行为,以便计算各自的价格,所以把cost()方法设置成抽象方法,这样Beverage就变成了抽象类 Description设置成私有变量,这样必须通过一个getDescription方法来取得该属性。 许多其他类型的咖啡继承 自类Beverage 5. Starbuzz Coffee fee system * Design: some additions added 此外,你还可以给你的咖啡加一些调料: Steamed Milk(蒸过的牛奶) Soy(豆酱) Mocha(糊状巧克力) Whip(生牛奶 ) 在Starbuzz店里,所有这些额外调料品都是收费的,因此他们在构建结账系统时候必须考虑到这些调料 5. Starbuzz Coffee fee system * Design: my first attempt... 5. Starbuzz Coffee fee

文档评论(0)

mwk365 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档