现在的位置: 首页 > 综合 > 正文

装饰者模式浅浅的理解

2014年01月01日 ⁄ 综合 ⁄ 共 2078字 ⁄ 字号 评论关闭

      俗套点,先来个装饰者模式的定义吧--装饰者模式可以动态地给一个对象增加其他职责。就扩展对象功能来说,装饰者模式比生成子类更为灵活。

    下面谈谈我对装饰者模式的一些理解吧:首先,装饰者的基类与被装饰者都派生于一个共同的基类CComponent,有着公共的接口Operation,被装饰者实现了其的基本行为,而装饰者的基类派生于CComponent类,更重要的是其内部有一个维护记录装饰者的CComponent指针,指向被装饰的对象,该对象可以是没有装饰过的对象,也可以是装饰过的对象。该基类实现的行为则是调用该CComponent指针实际指向的的装饰者对象的行为。而由此装饰类派生出的具体装饰类中的行为定义中除了自己附加行为的实现,还要调用装饰者基类的装饰行为。

    这样,有以下优点:1.装饰者模式提供了统一的接口来管理,都可以运用CComponent指针来进行管理。2.可以动态的组合装饰行为来装饰被装饰者。尽可能的减少新的对象的产生是考重新继承派生来实现,而是通过组合的方式来实现。

    下面找了一个比较容易理解的类图(类图是转载的哦)

 

装饰者模式类图

      下面是一个例子代码,理解不正确和代码有误的地方希望大家多多指正哦

      有个问题就是:m_people这个变量是个私有变量,为什么在公共继承的子类中其应该是不可访问的,而以下代码运行起来确没有问题内?茫然

  

抱歉!评论已关闭.