设计模式之装饰模式(Decorator)
装饰模式原理:给对象增加特性,这种特性是一种累加的效果
代码如下
#include <iostream>
#include <string>
#include <list>
using namespace std; /************************************************************************/
/* 装饰模式的作用是为对象增加属性 */
/************************************************************************/
class Phone
{
public:
Phone(string name):m_name(name)
{ }
Phone()
{ }
virtual void show(){}
protected:
string m_name;
}; class IPhone:public Phone
{
public:
IPhone(string name):Phone(name)
{ }
virtual void show(){cout << m_name << "的装饰" <<endl;}
};
class HTCPhone:public Phone
{
public:
HTCPhone(string name):Phone(name)
{ }
virtual void show(){cout << m_name << "的装饰" <<endl;}
}; class DecoratorPhone:public Phone
{
public:
DecoratorPhone(Phone *pPhone)
{
m_pPhone = pPhone;
}
virtual void show()
{
m_pPhone->show();
}
protected:
Phone *m_pPhone;
};
class DecoratorPhoneA:public DecoratorPhone
{
public:
DecoratorPhoneA(Phone *pPhone):
DecoratorPhone(pPhone)
{ }
virtual void show()
{
DecoratorPhone::show();
cout << "挂饰" <<endl;
}
};
class DecoratorPhoneB:public DecoratorPhone
{
public:
DecoratorPhoneB(Phone *pPhone):DecoratorPhone(pPhone){}
virtual void show()
{
DecoratorPhone::show();
cout << "贴膜" <<endl;
}
}; int main()
{
Phone *iphone = new IPhone("iphone4s");
Phone *dpa = new DecoratorPhoneA(iphone);
Phone *dpb = new DecoratorPhoneB(dpa);
dpb->show(); return 0;
}
设计模式之装饰模式(Decorator)的更多相关文章
- 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern)
原文:乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 装饰模式(Decorator Pattern) 作者:weba ...
- 二十四种设计模式:装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern) 介绍动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活.示例有一个Message实体类,某个对象对它的操作有Insert()和 ...
- 设计模式-09装饰模式(Decorator Pattern)
1.模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制:使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法.但是这种方法是 ...
- 设计模式之装饰模式(Decorator)摘录
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/fengbingchun/article/details/29237955 23种GOF设计模式一般分 ...
- 设计模式 笔记 装饰模式 Decorator
//---------------------------15/04/17---------------------------- //Decorator 装饰模式----对象结构型模式 /* 1:意 ...
- 结构型设计模式之装饰模式(Decorator)
结构 意图 动态地给一个对象添加一些额外的职责.就增加功能来说,D e c o r a t o r 模式相比生成子类更为灵活. 适用性 在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职责. ...
- 【设计模式】—— 装饰模式Decorator
前言:[模式总览]——————————by xingoo 模式意图 在不改变原来类的情况下,进行扩展. 动态的给对象增加一个业务功能,就功能来说,比生成子类更方便. 应用场景 1 在不生成子类的情况下 ...
- Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用
Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...
- 设计模式 装饰模式(Decorator)
设计模式 装饰模式(Decorator) @author ixenos 装饰模式是什么 1.装饰模式以对客户端透明的方式对象的功能,是继承关系的一个替代方案,但装饰模式可以在不创造更多子类的情况下,对 ...
随机推荐
- ISBN和标准编码关系以及概念
<中国标准书号>(China standard Book Number)是1986年由国家标准局批准颁发的一项国家标准(GB5795-86).该标准是在采用国际标准LSO2108——国际标 ...
- T—SQL用法剪辑,方便以后查看
一.用T-SQL查询表中第n行到第m行数据的写法示例 假设这里的n=6,m=10则有以下两种写法,qusID可以不连续,如下: select top 5 * from tb_wenti where q ...
- Decorator模式
Decorator模式能够像标准的继承一样为类添加新的功能. 不同于标准继承机制的是,如果对象进行了实例化,Decorator模式能够在运行时动态地为对象添加新的功能. <?php abstra ...
- Java排序
给出10个数,使用某种排序方法,按照从小到大的顺序输出个个数. 根据要求,首先得给出这10个数,这里的算法需要一个循环,数据结构需要一个长度为10的整型数组.首先用BufferedReader in= ...
- 更强的微光闪烁效果--第三方开源--Shimmer-android
Shimmer-android在github上的项目主页是:https://github.com/RomainPiel/Shimmer-android Shimmer-android干脆在Androi ...
- AngularJs记录学习02
<!doctype html> <html ng-app="myapp"> <head> <meta http-equiv="C ...
- <! [if IE 神奇的条件注释 ]>
早上起来无聊,看到某学长发的一张代码截图有条件注释,正好,研究一下. 条件注释: 在IE中用来区分IE版本.是否为IE的代码神器! 在其他的浏览器里是不好使的. 不过也值得了,IE都区分出来了,其他的 ...
- ruby on rails 实战(二)
1,修改routes文件,让所有的action都可以使用get或者post方式访问 match "/:controller/:action" => "control ...
- sqlserver,sqlite,access数据库链接字符串
SqlServer:string connection = "server=32.1.1.48;database=数据库名;user=sa;password=sa2008"; ac ...
- hdu 2645 find the nearest station
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2645 find the nearest station Description Since dande ...