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的<设计模式:可复用面向对象软件的基础>一书中对装饰模式 ...
随机推荐
- Java面试题整理(题目内容非原创)
面试题分类: 1.java 基础面试题 Java基础中对于io 中文件的读.写,util中的list map set这些要分清楚 还有线程.socket 都需要了解下 参考链接:http://blog ...
- C期未考试参考答案
输入10个数,要求编写一个排序函数,能够实现按绝对值从大到小排序.在主函数中输入10个数.输出排序后的10个数 #include<stdio.h>#include<math.h> ...
- Facebook发布C++ HTTP框架Proxygen
Facebook 宣布发布C++ HTTP 框架 Proxygen,其中包括了一个 HTTP server.Proxygen 是 oxygen 的谐音,支持 SPDY/3 和 SPDY/3.1,未来还 ...
- sencha touch 2.3 结合cordova 环境搭建
sencha touch 2.3环境搭建必备工具 sencha touch 2.3 包sencha cmd 4.0以上JAVA JDK 1.7以上(注意JDK和JRE的区别)Ruby 1.9.3或更早 ...
- thinkphp从数据库里的html代码显示页面不解析
首先,这个问题不应该出现在这里,因为以前在用ThinkPHP3.1.2的时候,利用富文本编辑器保存文本后,直接从数据库里面取出的数据都能正常显示,改用ThinkPHP3.2.3之后,thinkphp从 ...
- Flink Program Guide (4) -- 时间戳和Watermark生成(DataStream API编程指导 -- For Java)
时间戳和Watermark生成 本文翻译自Generating Timestamp / Watermarks --------------------------------------------- ...
- linux dd命令
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 1. 命令简介 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数 ...
- 2012年的MBP准备升级
2012年买的MBP MD313要升级啦! 原因是4G内存在升级10.9巨浪后,无论是登录还是打开程序都比较慢,看内存使用使用基本上是满了,因此有了升级内存的想法. 首先想到的是看最大容量,16G,所 ...
- Buffer Cache(缓冲区缓存)篇:keep缓冲区池(保留池)
Buffer Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用b ...
- poj3086---数论
#include <stdio.h> #include <stdlib.h> int T(int n) { ,i; ;i<=n;i++) { sum+=i; } retu ...