设计模式学习(十三):装饰模式

来源:互联网 发布:小海淘宝助手下载 编辑:程序博客网 时间:2024/05/19 22:03

在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

代码

#include <iostream>#include <string>using namespace std;class building{public:    virtual void show(){}};class gymBuilding:public building{ //健身房public:    gymBuilding(const char * n):name(n){}    void show(){cout<<name<<endl;}private:    string name;};class officeBuilding:public building{ //写字楼public:    officeBuilding(const char * n):name(n){}    void show(){cout<<name<<endl;}private:    string name;};class decorator:public building{ //装饰类public:    decorator(building *b):build(b){}    virtual void myDecorator(){        build->show();     }private:    building *build; };class MyDecorator:public decorator{public:    MyDecorator(building *b):decorator(b){}    void myDecorator(){        decorator::myDecorator();        addDecorator();    }private:    void addDecorator(){  cout<<"MyDecorator"<<endl;}};

使用

int main(){    building *b = new gymBuilding("gymBuilding");    decorator *d = new MyDecorator(b);    d->myDecorator();    delete b;    delete d;    return 1;}

结果

gymBuildingMyDecorator
0 0
原创粉丝点击