C++设计模式之装饰者模式(Decorator)
2015-07-16 14:01
567 查看
#include "StdAfx.h" #include <SSTREAM> #include<iostream> #include<fstream> #include<malloc.h> #include <windows.h> #include <list> using namespace std; class Base {//基类 public: virtual void Run() { printf("基类跑步....."); } protected: private: }; //当你的工程的类全部都设计好了,此时需求突然说在类功能上增加一些功能,那么我们此时可以使用装饰者模式 //实现了在运行时动态的扩展对象功能的能力(Concrete也就是我们平时使用到的一个具体类,但是使用过程中发现该类不够使用了,所以增加了BaseDecorator,DecoratorA和DecoratorB) class Concrete:public Base {//具体类 public: virtual void Run() { printf("具体类在跑步....\n"); } protected: private: }; //下面就是新增加的功能,以方便调用 class BaseDecorator:public Base {//装饰基类 public: Base* m_pBase; virtual void Run() { if(m_pBase!=NULL) { m_pBase->Run(); } } protected: private: }; class DecoratorA:public BaseDecorator {//装饰类一 public: virtual void Run() { AddAction();//做一些动作 m_pBase->Run(); } virtual void AddAction() { printf("做一些动作......\n"); } protected: private: }; class DecoratorB:public BaseDecorator { public: virtual void Run() { m_pBase->Run(); AddBehaviour();//添加一些行为 } void AddBehaviour() { printf("添加了行为....\n"); } protected: private: }; int main(void) { BaseDecorator *pA=new DecoratorA(); Base* pB=new Concrete(); pA->m_pBase=pB; pA->Run(); BaseDecorator* pC=new DecoratorB(); pC->m_pBase=pB; pC->Run(); return 0; }
相关文章推荐
- C++虚基类
- C语言之指针篇
- C++间接继承
- C++ 把文件路径中的单斜杠“\”换成双斜杠“\\”
- C++设计模式之外观模式(Facade)
- C++学习笔记之容器:顺序容器
- C++设计模式之享元模式(FlyWeight)
- C++虚基类
- C++间接继承
- C++获取一个目录下的所有文件
- c++类定义基础
- 引用形参使用中要注意的问题
- C++ 中string.find() 函数的用法总结
- 关于递归调用,函数指针,数组,字符串的一些理解
- 算法精解二十八(C语言版)
- C语言sizeofkeyword
- c++ 实现A* 算法
- leetcode 日经贴,Cpp code -Product of Array Except Self
- C++ 硬件验证 (VCS 配置)
- vb重构c++项目