大话设计模式-装饰模式

   前言

   穿衣打扮是现在的时尚潮流,我们时常刷淘宝来不断满足自己的打扮需求,买个帽子、换条裤子、整双时尚鞋。需求是没有极限的,无止境的购物,只要存在这个平台那么这些装饰性的购物是不可避免的。这在我们软件开发中可以看做是为我们实例化的对象添加一些额外的功能,要是我们对于每个都定义个子类来继承的话,那就是指数增长,根本没有头。那么我们但是这种无止境的职责是添加是行不通的,此时装饰模式登场。通过动态的给对象添加另一个职责来解决。


       装饰模式Decorator动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活

        理解:设计书上的例子将人和服饰分离,就跟分层似的。把服饰做一个接口让人这个类来调用,这样就很好的分离开了,人使用接口,扩展时实现接口,体现了依赖于抽象的原则。

                         


        Component(被装饰对象超类):定义对象的接口,可以给这些对象动态地添加职责.
 
       
ConcreteComponent(具体被装饰对象):定义具体的对象,Decortor可以给它增加额外的职责.
 
       
Decorator(装饰者抽象类):维护一个指向Component实例的引用,并定义了与      Component一致的接口
 
       
ConcreDecorator(具体装饰者):给内部具体被装饰对象增加具体的职责.


 装饰模式结构图

     

  总结:

    看着书上面的总结很好,我们在这里就用用吧。我觉得装饰模式,是为已有功能动态的添加更多功能的一种方法。但是到底什么时候用它呢?


    在本文的最初设计中,当系统需要添加新功能的时候,是向旧的类中添加新的代码,这些新增的代码通常装饰了原有类的核心职能或主要行为。这种设计方式问题在于,他们在主类中增加了新的字段、新的方法、新的逻辑,从而增加了主类的负责度,就行起初的那个人类,而这些新加入的东西仅仅是为了满足一些在某种特定情况下才会执行的特殊行为的需求。

   但是装饰模式提供了一个非常好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包含它所要装饰的对象,因此,当执行特殊行为时,在viewController里就可以根据需求有选择、按顺序的使用装饰功能包装对象了。
   通过这样的解决方案,我们可以把自己捂得很严实,也可以清凉的省布料。


   装饰模式的优点

    1.把类中的装饰功能从类中搬移出去,这样可以简化原有的类。
    2.当有效的把类中的核心功能和装饰功能区分开了,可以去除相关类中重复的装饰逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620531.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

VS2015+MATLAB2016b混合编程

原 VS2015MATLAB2016b混合编程 2017年12月03日 20:11:46 Zlase 阅读数&#xff1a;1878 更多 <div class"tags-box space"><span class"label">个人分类&#xff1a;</span><a class"tag-link" href"https://blog.csd…

用Adomd.net构建最清凉的olap示例

本来要写最轻量的&#xff0c;结果MSPY3.0给我来了个‘清凉’&#xff0c;好像也不错哦&#xff0c;那就清凉一下吧~ 什么是OLAP呢&#xff0c;我几句话也解释不清楚了&#xff0c;可以看 这儿。 当我们使用微软提供的 SQL Server Analysis Service来做OLAP分析时&#xff0c;这…

夏天想美美的出门?店湾妹的“明星穿搭教科书”,很美有木有?

Hi~各位小仙女&#xff01; 大家猜到了这个穿着花衬衫的小仙女是谁了吗&#xff1f; 图片描述(最多50字) 单单凭借一张背影照&#xff0c;如果不是很熟悉&#xff0c;肯定是很难猜出来的&#xff0c;给点线索提示哈&#xff0c;参加过《花儿与少年》&#xff0c;而且是胡歌的…

装饰设计模式

职责&#xff1a; 动态的为一个对象增加新的功能。 装饰模式是一种用于代替继承的技术&#xff0c;无需通过继承增加子类就能扩展对象的新功能。 使用对象的关联关系代替继承关系&#xff0c;更加灵活&#xff0c;同事避免类型体系的快速膨胀。 使用场景&#xff1a; 1.IO流…

夏日的清凉好装备,华为FreeBuds 4能说的不只舒适降噪

现如今,耳机就像智能手机一样,正慢慢成为我们的“感官”之一,即使是在如此炎热的夏日,人们出行的装备越来越少,但始终会有真无线耳机的一席之地。随着功能的丰富,耳机的使用场景也不仅限于通勤路上的“解闷儿”工具,更多的是可以融入到工作和生活的每个细节。就比如刚刚过去的端…

雨中重装徒步攀登清凉峰

《雨中重装徒步攀登清凉峰》 经历忙碌的一周工作后&#xff0c;本该在周六睡个懒觉&#xff0c;因报名参加了天涯俱乐部组织的重装徒步攀登清凉峰活动&#xff0c;只能在五点起床&#xff0c;洗漱&#xff0c;吃完早饭后&#xff0c;背上登山包后赶往集合地点。 清凉峰&#xf…

清凉的夏天

世界上有一种东西叫做夏天。阳光、沙滩、还有你最爱的澄汁。喜欢趴在地板上看着你的白汗衫在阳光下飘动你告诉我&#xff0c;我会飞上碧蓝的天你答应我那天送我的一双水晶鞋我说不用&#xff0c;只要你为我拾一颗石头&#xff0c;能永远沉在我心底我喜欢把心情写在日记本里&…

我的Q秀场

这是我最初最钟爱的一个Q秀。 自打上面我原来那美美的QQ秀过期之后&#xff0c;我就只能穿着清凉的过了好多天&#xff0c;如下图所示&#xff1a; 今天又找了一套衣服&#xff0c;可是不是免费的&#xff0c;很遗憾的是我穷的买不起。所以&#xff0c;只能穿上截个…

JSON文件读写教程【jsoncpp源码编译】【结尾附三方库下载链接】

目录 1 数据下载(jsoncpp源码)2 文件编译3 测试用例4 下载链接:内容: JSON文件的读取与保存可以使用jsoncpp库来实现,这里介绍该库的下载及编译方法。 1 数据下载(jsoncpp源码) 数据下载:Github地址 图1 github源码示意图 2 文件编译 2.1 点击Download ZIP,下载源码。 …

通过参数化可变形曲线直接从 X 射线投影数据计算分割研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

第一课 海边漫步

一、目的 1.初步了解编程思维方式 2.熟悉Scratch整体界面布局 3.了解背景与角色 4.了解坐标概念 二、内容 1.积木区: (1)代码标签:Scratch支持的所有代码积木, 通过这些积木,实现Scratch代码编写,实现编程目标。如图 (2)造型/背景标签:绘制或修改背景和角色…

使用python对有限数点进行随机漫步

有关python的随机漫步&#xff0c;使用python来生成随机漫步数据&#xff0c;再使用Matplotlib以能令人清晰可见的方式看到随机漫步后得到的图表。 首先&#xff0c;创建一个叫做“随机漫步”的python文件&#xff0c;我们创建一个名为RandomWalk的类&#xff0c;让计算机随机…

南卡和万魔还有漫步者蓝牙耳机哪个好?半入耳式蓝牙耳机对比

蓝牙耳机什么牌子好&#xff1f;这个问题&#xff0c;是一个仁者见仁、智者见智的问题。为了搞清这个问题&#xff0c;我也是入手了现在最热门最受欢迎的3款性价比国产蓝牙耳机&#xff0c;分别是南卡Lite pro2、漫步者lollipopds和万魔舒适豆。如果将三者对比起来使用&#xf…

【Python】随机漫步

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01;时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、创建 RandomWalk 类 3、随机选择方向 4、绘制随机漫步图 5、总结 1、缘起 本篇博客将使用 Python 来生成随机漫…

数据可视化—随机漫步

✅作者简介&#xff1a;大家好我是hacker707,大家可以叫我hacker &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;python &#x1f4ac;推荐一款模拟面试、刷题神器&#x1f449;点击跳转进入网站 随机漫步 创建RandomWalk类选择方向…

City walk火了,这3种城市漫步模式了解一下

目 录 1. 城市需要什么样的City walk 2. City walk模式一&#xff1a;「有目标」 3. City walk模式二&#xff1a;「故事化」 4. City walk模式三&#xff1a;「小而密」 关键词&#xff1a; 城市漫步 | 城市更新 | 街区改造 文化旅游 | 微度假 | 扩内需 City walk&#xff08…

7 集群基本测试

1. 上传小文件到集群 在hadoop路径下执行命令创建一个文件夹用于存放即将上传的文件&#xff1a; [atguiguhadoop102 ~]$ hadoop fs -mkdir /input上传&#xff1a; [atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/work.txt /input2.上传大文件 [atguiguhadoop1…

使用OpenCV-python对植物图片进行分类

文章目录 图片分类的思路和需要加载的库函数说明核心代码分析数据预处理&#xff1a;文件处理和命名匹配数据预处理&#xff1a;特征提取和标签提取学习模型&#xff1a;数据划分和模型训练预测输出&#xff1a;利用训练好的模型进行图片分类 完整代码附录和运行结果 图片分类的…

学习记录:Unity点击屏幕生成随机UI花朵

1 效果展示 点击屏幕的位置生成花朵&#xff0c;生成的花朵等5秒后自动销毁。 2 代码展示 1 生成花朵的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 鼠标点击生成花朵 /// </summary> public clas…

利用Python制造出七彩花朵

文章目录 前言小海龟花朵类移动函数画花朵 前言 来啦来啦来啦&#xff0c;小伙伴们快快来领取七彩花瓣雨吧&#xff01;&#xff01; 小海龟 老生常谈啦&#xff0c;在用python画樱花树前&#xff0c;我们先来了解一下turtle吧&#xff01; 小海龟(Turtle)是Python中画图的…