装饰器模式
来源:互联网 发布:淘宝怎么投诉未生产 编辑:程序博客网 时间:2024/06/15 12:33
《大话设计模式》
装饰器模式:
为已有功能动态地添加更多功能,当系统需要新功能,向旧的类中添加新功能,装饰了原有类的核心职责和行为,而不改变它们
就像包装袋一样,有新款的包装袋包装之前装好东西的包装袋
//clothes.h#ifndef _CLOTHES_H_#define _CLOTHES_H_#include <string>using namespace std;class Person{ public: Person(char *name):myName(name) {} Person() {} virtual ~Person() {} virtual void Show() { cout << " 装饰 " << myName << ":\n"; } private: string myName;};class Finery: public Person{ public: Finery():m_person(NULL) {} virtual ~Finery() {} void Decorator(Person *person) { this->m_person = person; } void Show() { m_person->Show(); } private: Person *m_person;};class TShirts: public Finery{ public: void Show() { cout << "大T恤 "; Finery::Show(); }};class BigTrouser: public Finery{ public: void Show() { cout << "跨裤 "; Finery::Show(); }};class Sneakers: public Finery{ public: void Show() { cout << "破球鞋 "; Finery::Show(); }};class Suit: public Finery{ public: void Show() { cout << "西装 "; Finery::Show(); }};class Tie: public Finery{ public: void Show() { cout << "领带 "; Finery::Show(); }};class LeatherShoes: public Finery{ public: void Show() { cout << "皮鞋 "; Finery::Show(); }};#endif
#include <iostream>#include <cstdio>#include "clothes.h"using namespace std;int main(){ Person *p = new Person("taotao"); cout << "装扮: " << endl; Sneakers *sneakers = new Sneakers(); BigTrouser *trouser = new BigTrouser(); TShirts *tshirts = new TShirts(); sneakers->Decorator(p); trouser->Decorator(sneakers); tshirts->Decorator(trouser); tshirts->Show(); delete sneakers; sneakers = NULL; delete trouser; trouser = NULL; delete tshirts; tshirts = NULL; delete p; p = NULL; return 0;}
- c++装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器模式
- 装饰器(Decorator)模式
- 浅谈装饰器模式
- java 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器(Decorator)模式
- 装饰器模式
- 装饰器模式
- 串口com10以上CreateFile打开成功的方法
- 黑马程序员——sql数据库学习日志
- Mongodb连接方法学习
- 黑马程序员——ADO.NET学习日志
- MFC 序列化总结
- 装饰器模式
- 移动开发之浅析cocos2d-x的中文支持问题
- new 用法详解
- Excel开发中的0x800A03EC异常
- MFC 序列化一点研究
- 标读“链表处理语言(LISt Processor)”
- 印度和中国程序员的区别
- Android 4.0 ICS SystemUI浅析——StatusBar工作流程之时间日期设置
- 邀请各位sharepoint开发者入驻sharepoint开发社区 sharepoint中文网 (http://www.sahrepointchina.com)