#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++设计模式之装饰者模式的更多相关文章

  1. Java 设计模式泛谈&装饰者模式和单例模式

    设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...

  2. C#设计模式(9)——装饰者模式(Decorator Pattern)

    一.引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类).A ...

  3. 设计模式之装饰者模式-java实例

    设计模式之装饰者模式 需求场景 我们有了别人提供的产品,但是别人提供的产品对我们来说还不够完善,我们需要对这个产品的功能进行补强,此时可以考虑使用装饰者模式. 我们已经有了产品,而且这个产品的功能非常 ...

  4. Java设计模式 - - 单例模式 装饰者模式

    Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/1 ...

  5. python 设计模式之装饰器模式 Decorator Pattern

    #写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...

  6. PHP设计模式之装饰器模式(Decorator)

    PHP设计模式之装饰器模式(Decorator) 装饰器模式 装饰器模式允许我们给一个类添加新的功能,而不改变其原有的结构.这种类型的类属于结构类,它是作为现有的类的一个包装 装饰器模式的应用场景 当 ...

  7. 实践GoF的23种设计模式:装饰者模式

    摘要:装饰者模式通过组合的方式,提供了能够动态地给对象/模块扩展新功能的能力.理论上,只要没有限制,它可以一直把功能叠加下去,具有很高的灵活性. 本文分享自华为云社区<[Go实现]实践GoF的2 ...

  8. Java 的设计模式之一装饰者模式

    刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了 装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行 ...

  9. Head First 设计模式 --3 装饰者模式 开闭原则

    装饰者模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供了比集成更有弹性的替代方案.设计原则:1:封装变化2:多用组合,少用继承3:针对接口编程,不针对实现编程4:为对象之间的松耦合设计而努力5 ...

  10. [设计模式] 9 装饰者模式 Decorator

    转:http://www.jellythink.com/archives/171#prettyPhoto 什么是装饰模式? 在GOF的<设计模式:可复用面向对象软件的基础>一书中对装饰模式 ...

随机推荐

  1. [ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...

  2. php调用java类文件

    最近在折腾php调用java类,网上查阅资料,最终选用JavaBridge,遇到的第一个问题是java_require() 函数引入自定义java打包而成的jar文件,在新版本的JavaBridge中 ...

  3. 重读LPTHW-Lesson15-17

    1.引入sys模块,argv参数变量解包,可以多一种方式获取用户输入: # filename:argv_test.pyfrom sys import argv script,first,second ...

  4. C++ Primer第18章Vector的再实现及bug修正

    C++Primer第18.1.2节在介绍allocator类的时候,给了一个仿照标准库中vector的例子.感觉示例代码非常好,但是本人发现了一个bug,与大家共享. 按照作者的示例程序,编译程序时总 ...

  5. 表格无边框,有内框,在table嵌套时,防止出现重复边线

    <html> <head> <title>test 表格无边框,有内框! ^^ CSDN 学习积累</title> <style type=&qu ...

  6. Google的兼容包问题【转】

    转自:http://blog.sina.com.cn/s/blog_3e28c8a50101g14g.html 项目之前好好的,今天开Eclipse,,出错. 错误Error retrieving p ...

  7. Hibernate 多表关联映射- 一对多关系映射(one-to-many)

    Hibernage.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...

  8. Android学习之SQLite学习

    花了2天时间,系统学习了下Android开发过程中使用的轻量级数据库SQLite的使用. 并掌握其增,删,该,查的基本数据库操作. 首先要使用SQLite数据库,须要通过Android系统提供的SQL ...

  9. struts2 模型驱动的action赋值优先顺序

    struts2 模型驱动的action赋值优先顺序: 1.优先设置model的属性. 2.如果model属性中没有对应的成员变量,则向上冒泡,寻找action中的属性进行set. 如果action中的 ...

  10. vs2010快捷方式

    [窗口快捷键] Ctrl+W,W: 浏览器窗口  Ctrl+W,S: 解决方案管理器  Ctrl+W,C: 类视图  Ctrl+W,E: 错误列表  Ctrl+W,O: 输出视图  trl+W,P: ...