#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. JQuery EasyUI combobox动态添加option

    <input class="easyui-combobox" id="rwlb" name="rwlb" style="wi ...

  2. 图的广度优先/层次 遍历(BFS) c++ 队列实现

    在之前的博文中,介绍了图的深度优先遍历,并分别进行了递归和非递归实现.BFS 无法递归实现,最广泛的实现是利用队列(queue).这与DFS的栈实现是极其相似的,甚至代码几乎都很少需要改动.从给定的起 ...

  3. Oracle EBS-SQL (WIP-6):检查任务已完成但状态是发放的任务.sql

    select WE.WIP_ENTITY_NAME         ,MSI.SEGMENT1         ,MSI.DESCRIPTION         ,WDJ.CLASS_CODE     ...

  4. 给flash文件加超链接[兼容主流浏览器]

    <div style="position: relative;"> <a style="width: 640px; height: 90px; posi ...

  5. delphi 打开文件夹并定位到一个文件(使用ShellExecute时加一个select参数,原来这么简单!)

    strFileName := FcxLV[nIndex].Items.Item[FcxLV[nIndex].ItemIndex].SubItems.Strings[0]; //路径  ShellExe ...

  6. C#dll版本号默认生成规则

    原文:C#dll版本号默认生成规则 1.版本号自动生成方法 只需把 AssemblyInfo.cs文件中的[assembly: AssemblyVersion("1.0.0.0") ...

  7. poj3094

    Quicksum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13523   Accepted: 9407 Descrip ...

  8. 剑指offer32 整数中1出现的次数(从1到n整数中1出现的次数)

    class Solution { public: int NumberOf1Between1AndN_Solution(int n) { ) ; ; ; while(i<=n) { int p= ...

  9. [Python]ConfigParser解析配置文件

    近期发现非常多接口配置都硬编码在souce file中了,于是就看了下python怎么解析配置文件,重构下这一块. 这个应该是早就要作的... 配置文件: [mysqld] user = mysql ...

  10. bootstrap-js(六)弹出框

    实例 为任意元素添加一小块浮层,用于存放非主要信息. 弹出框的标题和内容的长度都是零的话将永远不会被显示出来. 初始化 由于性能的原因,工具提示和弹出框的 data 编程接口(data api)是必须 ...