首页 > 代码库 > 大话设计模式-装饰模式(C++)
大话设计模式-装饰模式(C++)
《大话设计模式》的装饰模式的C++实现。
结构图:
Decorator.h:
#ifndef _DECORATOR_H #define _DECORATOR_H #include <iostream> #include <string> using namespace std; //ConcreteComponent类 class CPerson { public: CPerson(){}; CPerson(string str):m_sName(str){}; virtual void Show(); protected: private: string m_sName; }; class CFinery : public CPerson { public: //CFinery(CPerson *tmp):m_pComponent(tmp){}; void Decorate(CPerson *component); void Show(); protected: private: CPerson *m_pComponent; }; //ConcreteDecorator class CTShirts :public CFinery { public: //CTShirts(CPerson *tmp):m_pComponent(tmp){}; void Show(); protected: private: }; class CBigTrouser : public CFinery { public: //CBigTrouser(CPerson *tmp):m_pComponent(tmp){}; void Show(); protected: private: }; #endif
#include "Decorator.h" void CPerson::Show() { cout<<"装饰人:"<<m_sName<<endl; } void CFinery::Show() { if (m_pComponent != NULL) { m_pComponent->Show(); } } void CFinery::Decorate( CPerson *component ) { m_pComponent = component; } void CTShirts::Show() { CFinery::Show(); cout<<"TShirts"<<endl; } void CBigTrouser::Show() { CFinery::Show(); cout<<"垮裤"<<endl; }
#include <iostream> #include "Decorator.h" using namespace std; int main() { //装饰模式 CPerson person("lin"); CBigTrouser bigtrouser; CTShirts Tshirts; bigtrouser.Decorate(&person); Tshirts.Decorate(&bigtrouser); Tshirts.Show(); return 0; }
大话设计模式-装饰模式(C++)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。