装饰模式

其他二十三种设计模式

#include<iostream>using namespace std;//装饰模式
//人类
class Person {public:Person(){}           //删除会无法引用子类(TShirts、BigTrouser...)的默认构造函数Person(string _name) {this->name = _name;}virtual void Show() {cout << "装扮的" << name << endl;}private:string name;
};//抽象服饰类
class Finery :public Person {public:void Decorate(Person* _component) {this->component = _component;}virtual void Show(){if (component!=NULL){component->Show();}}
protected:Person* component;
};//具体服饰类
class TShirts :public Finery {public:virtual void Show(){cout << "大T恤 ";Finery::Show();}
};
class BigTrouser :public Finery {public:virtual void Show() {cout << "垮裤 ";Finery::Show();}
};
class Sneakers :public Finery {public:virtual void Show(){cout << "破球鞋 ";Finery::Show();}
};
class  Suit:public Finery {public:virtual void Show(){cout << "西装 ";Finery::Show();}
};
class Tie :public Finery {public:virtual void Show()  {cout << "领带 ";Finery::Show();}
};
class LeatherShoes :public Finery {public:virtual void Show() {cout << "皮鞋 ";Finery::Show();}
};void test1() {Person* xc = new Person("小菜");cout << "第一种装扮: \n";Sneakers* pqx = new Sneakers();BigTrouser* kk = new BigTrouser();TShirts* dtx = new TShirts();pqx->Decorate(xc);kk->Decorate(pqx);dtx->Decorate(kk);dtx->Show();delete dtx;delete kk;delete pqx;delete xc;}
int main() {test1();return 0;
}

大话设计模式装饰模式c++实现相关推荐

  1. 大话设计模式—装饰模式

    装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原 ...

  2. 大话设计模式——装饰模式

    需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象. 初步实现 需求比较简单,直接上代码: public class Person {private String name;p ...

  3. 大话设计模式-装饰模式(大鸟和小菜Java版)

    装饰模式:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象.(百度百科) 这个模式让后期的修改变得极为简单,真的就高内 ...

  4. 由浅入深大话设计模式——装饰模式

    今天我们从一个日常每个人都会接触的地方下手--换装,人靠衣服马靠鞍,衣服确实能提升一个人的外表分数(可是我就不会 = =),那如果让你做一个给人搭配不同衣服的系统你会怎么做呢? 下面我们设计一个程序: ...

  5. 大话设计模式-装饰模式

    前言 穿衣打扮是现在的时尚潮流,我们时常刷淘宝来不断满足自己的打扮需求,买个帽子.换条裤子.整双时尚鞋.需求是没有极限的,无止境的购物,只要存在这个平台那么这些装饰性的购物是不可避免的.这在我们软件开 ...

  6. 【大话设计模式】设计模式系统学习大合集

    转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...

  7. 大话设计模式C++版——装饰模式

           女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...

  8. 大话设计模式之装饰模式(python实现)

    大话设计模式之装饰模式 使用场景 定义 装饰模式结构图 python实现装饰模式 代码结构图 优点 使用场景 建造过程不稳定,不确定.把所需的功能按照正确的顺序串联起来进行控制. 新加入的东西仅仅是为 ...

  9. 【Python】《大话设计模式》Python版代码实现

    <大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...

最新文章

  1. Django的是如何工作的
  2. 轻松自动化---selenium-webdriver(python) (六)
  3. [转载]ubuntu 12.10 软件源更新列表
  4. python读取lmdb文件_如何使用python創建LMDB文件
  5. win下anaconda装python2.7和3.5以及jupyter共存 (本篇实践通过)
  6. C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
  7. mysql 存储时间 时间戳_具体场景下MySQL中用“时间戳”存储时间的问题
  8. cds5516舵机控制程序_[电力世界]中的应用程序CDS
  9. SQL中代替Like语句的另一种写法
  10. 万字长文,解密秒杀架构!(建议收藏)
  11. 笔记本电脑突然搜索不到无线网信号怎么办?
  12. android 手机日志查看工具,日志查看器手机版下载
  13. 【实用教程】本地blast使用及简单python脚本辅助
  14. C语言中,的三种作用
  15. OOALV的基本实现步骤
  16. 牛客观察 | 大厂疯狂招人背后: 中小企业要躺平“捡漏”吗?
  17. HBase如何快速查询
  18. 【鱼骨图】【数学史】行列式、矩阵论的历史
  19. 强引用,软引用,弱引用和虚引用的说明
  20. 各种正则判断(前端)

热门文章

  1. 华为鸿蒙视频课堂,有道精品课正式入驻华为鸿蒙OS荣耀智慧屏
  2. 这个教程实在是太强悍了,大家都来一饱眼福吧
  3. 富裕的深圳人与租房的深圳人
  4. 使用ethers.js创建以太坊HD钱包(生成BIP-039 + BIP-044钱包),在根据私钥、助记词找回钱包!
  5. 银联无感支付自动缴费不停车快速离场
  6. MySQL创建数据库时指定编码字符集utf8mb4
  7. vscode显示函数列表
  8. 手机服务器怎么找回,手机里在哪能找到服务器
  9. 智能家居布局:小米牵手美的,格力有点着急
  10. 如何ubuntu下启动停止重启MySQL