装饰模式的C++实现

来源:互联网 发布:python网络爬虫 编辑:程序博客网 时间:2024/06/06 00:16

相信能来找文章看的同学多半对于装饰者模式不陌生,此处不墨迹直接贴出源码。很容易懂,注释应该也不需要了吧。

#include <iostream>using namespace std;class baseClass //基类,基本上是在定义需要被装饰的接口{public:virtual void print(){};};class extendedClass:public baseClass //接口的一种实现,同时也是被装饰类引用的对象{public:void print(){cout<<"this is in Externedclass!"<<endl;}};class DecoratorClass:public baseClass //装饰类的接口声明,需要继承baseclass,否则就成了包装,没有利用类的多态。{public:baseClass* concretebase;void setDecoratorClass( baseClass * cb){this->concretebase = cb;}virtual void print(){}; //可以不需要,为了可读性,不妨加上};class DecoratorClassA:public DecoratorClass{public:DecoratorClassA(baseClass * concretebase){this->concretebase = concretebase;}virtual void print()//装饰者模式的核心内容——对原有方法的拓展{concretebase->print();//原方法cout<<"this is in DecoratorClassA!"<<endl;//拓展};};int main(){baseClass *d = new DecoratorClassA(new extendedClass()); //直接声明装饰类,利用一个baseclass的扩展类去实例化它d->print();return 1;}


0 0