设为首页 加入收藏

TOP

大话设计模式-装饰模式(C++)
2015-07-20 17:37:40 来源: 作者: 【 】 浏览:2
Tags:大话 设计模式 装饰 模式

《大话设计模式》的装饰模式的C++实现。

结构图:

\\

DecoratZ??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vci5oOjwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#ifndef _DECORATOR_H #define _DECORATOR_H #include #include 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


Decorator.cpp:
#include "Decorator.h"

void CPerson::Show()
{
	cout<<"装饰人:"<
  
   Show();
	}
}

void CFinery::Decorate( CPerson *component )
{
	m_pComponent = component;
}
void CTShirts::Show()
{
	CFinery::Show();
	cout<<"TShirts"<
    
    


main.cpp:
#include 
     
      
#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;
}
     


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces Round #268 (Div. 2) 下一篇[C++]二维数组还是一维数组?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)