博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(3)-装扮你的类(装饰模式)
阅读量:6607 次
发布时间:2019-06-24

本文共 737 字,大约阅读时间需要 2 分钟。

首先看看书上的例子吧!人穿衣服的例子!

类图就不画了,就是简单的类结构。

代码如下:

#include 
using namespace std; class person{private: string name;public: person(string name){ this->name = name; } void wearTShirts(){ cout<<"大T恤"<
wearLeatherShoes(); p->wearSuit(); p->wearBigTrouser(); p->show(); cout<<"第二种装扮"<
wearLeatherShoes(); p->wearTShirts(); p->wearSneakers(); p->show(); return 0;}

如果要新添加一种装扮,那么就需要修改person类的结构,这样就违反了开闭原则

那就先做抽象好了,把变化的抽象出来,于是类图结构如下

2011041315295158.jpg

对应这个实现上面的程序,好像是方便了一些,但是如果继续增加需求呢?就会出现很多的子类。

从而引出装饰模式

装饰模式是动态的给对象增加一些属性和职责

类结构如下

2011041315454745.jpg

Componment是定义的一个对象接口,可以给这些对象动态的添加职责

ConcertComponent是要被装饰的对象,即原始对象

Dectorator是装饰抽象类

ConcertDectoratorA和ConcertDectoratorB是具体的装饰对象。

看看原来的类图修改如下

2011041316073432.jpg

这样,就可以实现对人对象的动态装载,不过,这个例子举得感觉不是很好,没有列出装饰模式的精髓。

转载地址:http://qzdso.baihongyu.com/

你可能感兴趣的文章
Mysql InnoDB 行锁和表锁介绍
查看>>
利用vertical-align实现水平垂直居中弹窗
查看>>
JeeSite的Excel导入、导出、支持大数据量,使用annotation最小化配置
查看>>
微服务随笔
查看>>
发生NoClassDefFoundError的可能之一
查看>>
JS基于正则实现数字千分位用逗号分割
查看>>
七月SSL行业新闻回顾
查看>>
专访Mockplus用户齐嘉伟 | Mockplus满足做原型的所有需求
查看>>
01、Vue.js 开篇---Vue的介绍及准备工作
查看>>
Java操作MongoDB采用MongoRepository仓库进行条件查询
查看>>
你应该知道的 RPC 原理
查看>>
将Android手机无线连接到Ubuntu实现唱跳Rap
查看>>
对话 | 薛娅菲:从0到1,行则将至
查看>>
开发一个工业互联网应用到底需要几步?
查看>>
别人在忙挖矿,阿里工程师却悄悄用区块链搞了件大事!
查看>>
Flutter 构建完整应用手册-设计基础知识
查看>>
对事件的基本理解
查看>>
111111 排序算法
查看>>
四周第二次课(11月7日) 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
查看>>
rpm包介绍、 rpm工具用法 、yum工具用法、 yum搭建本地仓库
查看>>