zoukankan      html  css  js  c++  java
  • Head First设计模式(装饰者模式)

      从现在开始,我将以写一个小软件的方式来进行模式识别的学习,包含需求分析,功能模块设计,原理图设计,程序实现这个几个部分,可能具体的模式模块不可能都包括在内。

        需求分析:星巴兹咖啡店已经遍布全世界的很多对方,我们需要写个软件对它的咖啡店进行管理,主要是客户需要咖啡种类的管理,例如,我想要一个奶油咖啡,另一个人可能需要一个摩卡咖啡,所有,咖啡的种类会有很多,也就是可以理解为,咖啡加上它的修饰者,会产生很多的咖啡种类。并且,咖啡的不同的修饰者的添加数目不定,相同的修饰者添加数目也不定。所以,如果使用类继承,会产生类爆炸的情况,我们将使用装饰者模式进行设计。

      装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

      需要说明几点:

      1.装饰者和被装饰者对象有相同的超类型

      2.你可以用一个或多个装饰者包装一个对象

      3.既然装饰者和被装饰者对象有相同的超类型,所以在任何需要原始对象(被包装)的场合可以用装饰过的对象代替它

      4.装饰者可以在所委托被装饰者的行为之前与/或之后加上自己的行为,以达到特定的目的。

      原理图设计:

    对上面的设计图,我觉有几点需要注意:

      1.这里利用几次达到“类型匹配”,而不是利用继承类获得“行为”(虽然也也得到了cost和getDescrption行为,但这不是主要的目的)

      2.使用对象组合,可以把所有饮料和调料更有弹性地加以混合与匹配。

    下面是程序设计和实现:(这个部分我们将以源程序的形式实现)

     StarbuzzCoffee.rar

  • 相关阅读:
    host文件的用处
    探究 Flex 组件的生命周期
    QQ在开发中的应用
    转:linux进程间通信的几种机制的比较及适用场合
    转:Linux 2.4.x内核软中断机制
    转:PLL 锁相环
    转:LPC2214的PLL与定时器设置
    转: V4L2驱动程序架构
    转:linux select 多路复用机制
    [转] Linux 句柄是什么 ?
  • 原文地址:https://www.cnblogs.com/lufangtao/p/2461661.html
Copyright © 2011-2022 走看看