C++设计模式之装饰者模式
#include "HandCake.h"
//手抓饼 HandCake::HandCake()
{
this->price=;
this->name="手抓饼";
} HandCake::~HandCake(void)
{
}
int HandCake::GetPrice()
{
return ; }
string HandCake::GetName()
{ return name;
}
#include "Ham.h" Ham::Ham(void)
{
} Ham::Ham(HandCake *cake)
{ //this->cake=cake;
int p=cake->price;
this->name=cake->name+"加火腿";
this->price=cake->price+;
} Ham::~Ham(void)
{
}
string Ham::GetName()
{ return this->name;
}
int Ham::GetPrice()
{
return this->price; }
// Decoration.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "HandCake.h"
#include "Ham.h"
#include <iostream>
#include "vld.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HandCake *cake=new HandCake();
Ham *HamHandCake1=new Ham(cake);
std::cout<<HamHandCake1->GetName()<<HamHandCake1->GetPrice()<<"元"<<endl;
Ham *HamHandCake2=new Ham(HamHandCake1);
std::cout<<HamHandCake2->GetName()<<HamHandCake2->GetPrice()<<"元"<<endl; getchar();
delete cake;
delete HamHandCake1;
delete HamHandCake2;
return ;
}
运行结果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM4AAAAsCAIAAACi8RAaAAADy0lEQVR4nO2c23IbIQyGed28VV6jOTikadLe5uAkbt/Ap75Cr7ojI+lH7MKabvWPJoNZIQR8YO8Mk/DleZvY5eXlxcVFCCGEEGOMMYZTRSZeL/onAbP1YrRsMuPyEdva+9Ueaa0s/lXigCDZ0WmdGuOnjzBqLlc1OWqumeSouWbSaNS0737wm0D8Oi9ywPGzmtLWNVWlqMVTiQ64IXYeAZ9duG0yrnj6ijDixzXuQtSU4L3L8gZaNBdReT0xcpk0tzSxK4uaWMim5DKp6FQbgVqQFow6lO5mkU4ANABF++ioNVEt1MTzD6PGV1ST9pRnVRc1cWggvqX+/9XV85Za9gsUz3soOdXEesxNkIAYh5roKY4Lw6oliXktndUlCKOWyDILRtS0UHVR0z5mI9NVF+MDLi3EZIe5QF29bKnVQk37mw04D2qitMjgyNGQctQEtUCNL5XWtilqImdgCAA1kIyjZpWGWizREI1/DAoTSY0xvhjNuGwW1JIexfzBeLP1Yp7YczmqdaoNkzsONbFGW0WtADIs8sFsJU1GoKZtnoXr+mVLrd1rgdj8H0KNYxfaoLZY8q5fdtSaosYjYBaNINrpNLpx1MRBJRqeivX2ZBy1EApRs6AgriLoTkOtaGmzwTlqloAWWXbCclF73VHTUBMnHfuIqAWdPPt21zrCfWkJ4/gVFx6EwrtlIbp53Q0GUAtjjzSjstu9dOsb12xw42dk4jMRhcUCZBdF7QailkibO7x3cU3WAcfPqsV695ZPvypFLbu/AYK8SRX47MJtk3Hxc04ccm/5lCaANSV4qtvXHTW/r8YLOKXe8ulXt287an5fjRdKUTtvPv2qFmqRKeRQ4zOoSXvKs6q7tOLQtPGeNx/co+Y8q1ZvO2p+X42Pyxi/h3xEZ5pYUjYqVNHqbU/N76sF/fe42LCTfDQyaA3gJjvtFXS33t+t96u/5vfVeCGequd8AEz46XyoDeb31XgBN+wqHwyTpS+c0iTF9Z6a31ejPYr595wPny5cL+aJPccrvu+p+X01XsBtu8pHRKqIM5DPVMX3/T0xv6/GC/xvt/lwqmiNxhxGrRp59zOixiNgFo0g2uk0uvGl1broJ5/INDwV6+3JVEPt68eBmt9X4wWQVW/5lEpse2bUxEFiHxG1YFgqrUab8SJYS+ODCL3lUyo8NLBbRurh40DN76vx+Y1MHeZTqorIWvXweaDm/8rP1UrfPg/UHDVXKz1uDtQcNVcrPW6O1Bw1Vys9bY7UHDVXK33/eaTmqLlayVFzzaQfv35Tc9RcjfQHJfc5wX6vAQQAAAAASUVORK5CYII=" alt="" />
C++设计模式之装饰者模式的更多相关文章
- Java 设计模式泛谈&装饰者模式和单例模式
设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...
- C#设计模式(9)——装饰者模式(Decorator Pattern)
一.引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类).A ...
- 设计模式之装饰者模式-java实例
设计模式之装饰者模式 需求场景 我们有了别人提供的产品,但是别人提供的产品对我们来说还不够完善,我们需要对这个产品的功能进行补强,此时可以考虑使用装饰者模式. 我们已经有了产品,而且这个产品的功能非常 ...
- Java设计模式 - - 单例模式 装饰者模式
Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/1 ...
- python 设计模式之装饰器模式 Decorator Pattern
#写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...
- PHP设计模式之装饰器模式(Decorator)
PHP设计模式之装饰器模式(Decorator) 装饰器模式 装饰器模式允许我们给一个类添加新的功能,而不改变其原有的结构.这种类型的类属于结构类,它是作为现有的类的一个包装 装饰器模式的应用场景 当 ...
- 实践GoF的23种设计模式:装饰者模式
摘要:装饰者模式通过组合的方式,提供了能够动态地给对象/模块扩展新功能的能力.理论上,只要没有限制,它可以一直把功能叠加下去,具有很高的灵活性. 本文分享自华为云社区<[Go实现]实践GoF的2 ...
- Java 的设计模式之一装饰者模式
刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了 装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行 ...
- Head First 设计模式 --3 装饰者模式 开闭原则
装饰者模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供了比集成更有弹性的替代方案.设计原则:1:封装变化2:多用组合,少用继承3:针对接口编程,不针对实现编程4:为对象之间的松耦合设计而努力5 ...
- [设计模式] 9 装饰者模式 Decorator
转:http://www.jellythink.com/archives/171#prettyPhoto 什么是装饰模式? 在GOF的<设计模式:可复用面向对象软件的基础>一书中对装饰模式 ...
随机推荐
- IOS开发 统计XCODE 代码行数
如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -nam ...
- HDU 1033 - Edge
题目很水 然翻译感人 顺时针或者逆时针走,输出坐标 #include <iostream> using namespace std; ]; int p; ]={,,,-,}; ]={,,- ...
- python基础:名称空间与作用域
Python的变量定义后都有自己的作用域,每个作用域内都有名字空间.名称空间就是变量名称与对象的关联关系.Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象.从 ...
- Java split方法源码分析
Java split方法源码分析 public String[] split(CharSequence input [, int limit]) { int index = 0; // 指针 bool ...
- Three-Color Flag
问题陈述: 三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之. ...
- c# 中的 Trim
1. 让用户输入字符串 并且判断是否是 'yes'(无关大小写) Console.WriteLine("input a string"); string userResponse ...
- flex lineChart中自定义datatip
原文 http://www.giser.net/?p=776 在Flex4中使用lineChart会遇到一个bug,datatip上的背景是黑色的,造成文字看不清楚,和整体界面不协调. 那么解决这个问 ...
- 本地/远程Service 和Activity 的交方式(转)
android SDK提供了Service,用于类似*nix守护进程或者windows的服务. Service有两种类型: 本地服务(Local Service):用于应用程序内部 远程服务(Remo ...
- git使用三把斧
git status -查看哪些更改 git add file1 file2 ...
- XMPP iOS开发(IM开发,转)
搭建完本地服务器之后,我们便可以着手客户端的工作,这里我们使用XMPPFramework这个开源库,安卓平台可以使用Smack(最好使用4.1以及之后的版本,支持流管理),为了简单起见这里只实现登陆. ...