设计模式之(三、装饰模式Decorator)

设计模式之三、装饰模式Decorator
适合范围:动态地给一个对象添加一些额外的职责。
书中的实例:
以人为对象,对其做的各种装饰性的行为,如穿衣;裤子;鞋子;等等行为。
装饰模式的结构图如下:

C++实现的关键代码如下:
1、抽象类:CComponent
CComponent.h
//纯虚函数
virtual void Operation() = 0;

2、具体对象类:CConcreteComponent.cpp
void CConcreteComponent::Operation()
{
}

3、装饰父类:CDecorator.cpp
void CDecorator::Operation()
{
    if(m_com != NULL)
    {
        m_com->Operation();
    }
}

void CDecorator::SetDecorator(CComponent *com)
{
    m_com = com;
}

CDecorator.h
protected:
CComponent *m_com;

4、子类:实现装饰行为 CDecoratorA.cpp
void CDecoratorA::Operation()
{
    m_com->Operation();
    //实现子类自己的行为
    OperationA();
}

void CDecoratorA::OperationA()
{
    cout<<"穿上衣服"< }

5、子类:实现装饰行为 CDecoratorB.cpp
void CDecoratorB::Operation()
{
    m_com->Operation();
    //实现子类自己的行为
    OperationB();
}

void CDecorator::OperationB()
{
    cout<<"穿上裙子"< }
...

6、客户端代码 main.cpp
CConcreteComponent *con = new CConcreteComponent();
CDecoratorA *ca = new CDecoratorA();
CDecoratorB *cb = new CDecoratorB();

ca->SetDecorator(con);
cb->SetDecorator(ca);

cb->Operation();

 

//释放内存

if(con != NULL)

{

   delete con;

}

 

if(ca != NULL)

{

   delete ca;

}

 

if(cb != NULL)

{

   delete cb;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值