大话设计模式学习(一)----装饰模式
来源:互联网 发布:萧山网络问政有用吗 编辑:程序博客网 时间:2024/05/17 06:07
大话设计模式学习(三)—-装饰模式C++实现
- 前面还有简单工厂模式和策略模式,今天先记录装饰模式
一、装饰模式介绍
注意这里面涉及到的设计原则
开放-封闭原则(OCP)
Software entities(classes,modules,functions etc) should open for extension ,but close for modification.
什么意思呢?
所谓开放封闭原则就是软件实体应该对扩展开放,而对修改封闭。开放封闭原则是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现。
开放封闭原则主要体现在两个方面:
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
对修改封闭,意味着类一旦设计完成,就可以独立其工作,而不要对类尽任何修改。
二、装饰模式C++实现
- 环境 win764位 VS2013
- 场景:小菜穿衣服
类结构实现代码
#include <iostream>using namespace std;class person{public: person(string setName) { this->name = setName; } person() {} virtual void show() { printf("%s%s\n", "装扮的", name); }private: string name;};class clothes : public person{public: void decorate(person *setComponent) { this->component = setComponent; } void show() { if (component) { component->show(); } }private: person *component = NULL;};class TShirts:public clothes{public: void show() { cout << "大T恤" << endl; clothes::show(); return; }private:};class bigTrouser:public clothes{public: void show() { cout << "垮裤" << endl; clothes::show(); return; }private:};class shoes : public clothes{public: void show() { cout << "球鞋" << endl; clothes::show(); return; }};
测试函数
void testDecorator(){ person *xc = new person("小菜"); TShirts *tx = new TShirts; bigTrouser *kk = new bigTrouser; shoes *qiuxie = new shoes; tx->decorate(xc); kk->decorate(tx); qiuxie->decorate(kk); qiuxie->show();}
注意在person类的实现中,需要加上person(){},这个空的构造函数,不然会出错
所有设计模式实现的C++代码我都会传到github上面,之后给出地址
git地址如下
设计模式C++实现代码(不断更新中)
0 0
- 大话设计模式学习(一)----装饰模式
- 大话设计模式学习 装饰模式
- 大话设计模式-装饰模式
- 大话设计模式-装饰模式
- 大话设计模式-装饰模式
- 大话设计模式--装饰模式
- 大话设计模式----装饰模式
- 读《大话设计模式》学习小结(一)装饰器模式
- <大话设计模式学习一>命令模式
- 大话设计模式学习(四)——装饰模式
- 大话设计之装饰模式
- 大话设计模式之装饰设计模式
- 我也大话设计模式--装饰模式
- 大话设计模式----装饰模式笔记
- 大话设计模式(四)装饰模式
- 大话设计模式之-----装饰模式
- 大话设计模式-装饰者模式
- 大话设计模式之装饰模式
- oracle 10g 导入dmp文件
- 0024-pg数据库的sequence问题
- JavaScript 运算符 和 常用
- iOS网络3—UIWebView与WKWebView使用详解
- RecyclerView动画集合
- 大话设计模式学习(一)----装饰模式
- Android 之SQLite(增 删 改 查)
- 年近30,朋友聚会都聊什么?
- 标准SQL语句分类
- Java数据抓取总结--1.准备工作
- Android基础-Android的生命周期
- 7. Reverse Integer
- 心得20160316
- 适配