设计模式系列
文章平均质量分 75
该专栏主要记录设计模式的学习总结
__MrCool
飘飘何所似,天地一沙鸥
展开
-
C++实现设计模式总结
23中设计模式已经总结完毕,是时候总结一下了。文章目录1. 系列博文2. 设计模式分类总结3. 设计模式的经验之谈4. 附录1. 系列博文【系列博文地址,右击在新标签页中打开链接】2. 设计模式分类总结 这里不再是从结构型,行为型,创建型三个类型进行分类,而是从变化与稳定的角度中进行分类,因为变化与稳定是设计模式的最终目的,也是本次系列博文一直在贯彻的。组件协作:模板方法__Template Method策略模式__Strategy观察者模式__Observer/Event对.原创 2021-06-17 20:05:14 · 317 阅读 · 0 评论 -
C++实现解析器模式
第23个设计模式文章目录原创 2021-06-14 16:43:14 · 716 阅读 · 0 评论 -
C++实现访问者模式
文章目录1. 情景与意图2. 访问者模式3. 类的访问4. 大总结1. 情景与意图 在一些编程语言中,提供了分类和类扩展这样的语法,分类就是将类按照某一些特定的规则分成分区,这样方便阅读。举个例子,有一个People类,我们可以将该类建立分类,分为student,teacher,employee三个分类。注意分类不是子类,而是一个类建立了分区而已。这样的好处就是,职责清晰,逻辑明了。 在日常的开发中,我们可能需要对一些类有一些访问的操作,但是我们不希望直接添加到类中,因为这样会破坏原有的封装。.原创 2021-06-14 16:17:15 · 336 阅读 · 0 评论 -
C++实现命令模式
文章目录1. 情景与意图1. 情景与意图 如果学习过Linux操作系统的同学会知道,使用Linux操作系统的同学一般是不会用鼠标点来点去,虽然是带有桌面的,我们通常是使用命令的方式。说到这,如果有对Linux操作系统感兴趣的话,欢迎关注【Linux操作系统学习系列】。...原创 2021-06-11 16:07:52 · 515 阅读 · 0 评论 -
C++实现职责链模式
文章目录1. 情景与意图2. 职责链设计模式3. 视图事件的响应链4. 总结1. 情景与意图 公司老板在使用你们团队写的app时,发现了一个bug。但是领导不知道这个app是哪个团队在维护,于是领导让逐级向下反馈,最终反馈到了你们的团队,发现时你引入的,于是你开始响应,并修复这个bug。 在上面的传递中,其实就是一个职责链,修复bug这个反馈,逐级传递,在这个链路上有很多的对象都可以收到,但是只有一个对象可以进行相应。 对于应用程序也是的,每个视图都是具有层级的,当鼠标或者手指点击事件产生.原创 2021-06-06 17:21:19 · 267 阅读 · 0 评论 -
C++实现迭代器模式
文章目录1. 情景与意图2. 迭代器模式3. 容器迭代器4. 总结1. 情景与意图 在STL的六大组件中,其中一个组件就是 迭代器。可见迭代器的使用场景和作用都是非常大的,在STL的容器中都实现了自己的迭代器。迭代器,顾名思义,就是和为了方便遍历而提供的一中手段,我们对于自己实现的容器或者其他对象,应该怎样设计自己的迭代器呢?——迭代器设计模式。2. 迭代器模式 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 就是不暴露对象细节的情境下,提供以恶搞顺序遍历的.原创 2021-06-06 00:46:58 · 759 阅读 · 0 评论 -
C++实现组合模式
接下来4个模式是非常有趣的设计模式,同属于一个类型。文章目录1. 情景与意图1. 情景与意图原创 2021-06-05 23:59:48 · 400 阅读 · 0 评论 -
C++实现备忘录设计模式
文章目录1. 情景与意图2. 备忘录模式3. 备忘录4. 大总结1. 情景与意图 在我们平时打游戏的时候,为了避免任务完成失败重头的悲剧,我们通常会存档,失败后或者退出游戏后,下次进来我们会读档。这就是一个备忘的功能。 在日常的开发中,我们有时候需要距离对象的某些状态,在对象执行完一些行为后,返回这些状态。应该怎样来设计这样的开发呢?备忘录模式2. 备忘录模式 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 概念不.原创 2021-06-04 18:59:18 · 418 阅读 · 0 评论 -
C++实现状态模式
下面我们开始一个新的类型系列模型。文章目录1. 情景与意图2. 状态模式3. 文件的状态4. 总结1. 情景与意图 一个对象可以有很多的状态,不同的状态,对象就会有不同的行为。比如文件如果是只读的状态,那么就只能读不能写入,如果是只写的,那就不能读,再或者是读写的。在对象的状态改变时,其可以支持的行为也应该改变。 如何实现这个设计——状态模式。2. 状态模式 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 其实就是说,不同状态不同行为切换。行为可以是表现形式.原创 2021-06-04 16:49:39 · 538 阅读 · 0 评论 -
C++实现中介者模式
好了,这是这类型设计模式的最后一个,最后一小节进行大总结。文章目录1. 情景与意图2. 中介者模式3. MVC4. 大总结1. 情景与意图 其实看到这个名字,也能对这个设计模式有了一个初步的印象,在我们日常生活中,通常有租房,买房,卖房的需求,这个过程比较漫长和消耗时间,因此我们通常会交给中介去处理,我们不用面对很多人,只用和中介通信即可。 在我们的工程中,也会存在对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同.原创 2021-05-30 17:08:23 · 274 阅读 · 0 评论 -
C++实现适配器模式
STL中的stack和queue就是典型的适配器文章目录1. 情景与意图2. 适配器模式3. stack4. 总结1. 情景与意图 在我们的日常生活中就有很多的适配器接口,比如mac电脑仅仅提供了两个type-c的接口,但是我们需要连接显示器,或者usb等等,此时就需要一个适配器接口,将type-c接口转换成我们能用的接口。在C++的STL中,我们有时候需要FIFO或者LIFO的数据结构,此时我们将双端队列进行封装成我们想要的stack和queue。 适配器模式主要解决在软件系统中,常常要将.原创 2021-05-30 15:47:10 · 380 阅读 · 0 评论 -
C++实现代理模式
下面带来一个常用的设计模式——代理模式文章目录1. 情景与意图2. 代理模式1. 情景与意图 还记的模板方法模式,有一种说法叫晚绑定。晚绑定其实就是无法预知与后面未知的进行通信,也就是说无法直接访问或者达到某个目的。如果了解UIKit,其中常用的一个UITableView,它主要作用与通讯录列表,好友列表等UI,我们在创建一个这样的UI的时候,它是不知道我们一共有多少联系人,QQ好友等。因此它有一个dataSourceDelegate,就是数据代理,用它来获取数据。 现实中比如你想买国外的一.原创 2021-05-27 21:51:56 · 282 阅读 · 0 评论 -
C++实现门面模式
新的类型,这一类型有 4 种,我们慢慢看。文章目录情景与意图门面模式情景与意图 假设我们要提供一个某一个功能的SDK,比如语音处理相关的,合成,解析等等。在别人使用的时候应该是使用我们提供的接口,而不应该直接使用我们内部的细节方法。 在日常开发中,总会发生一些组件或者程序的调用方与组件或程序的子模块发生耦合,这样的设计就违法了面向对象的依赖倒置原则与接口隔离原则。 于是,门面设计模式应运而生。门面模式 隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。 ...原创 2021-05-17 22:34:22 · 342 阅读 · 7 评论 -
C++实现享元模式
简单的享元模式。文章目录1. 情景与意图2. 享元模式3. 图片id4. 大总结1. 情景与意图 假设我们每次去写作业的时候,都去买一支笔,那么文具盒总会有撑爆的一天。另外常量字符串我们都知道在创建后,及时生命周期结束,也并不会立即被销毁,而是还是存在内存中,当下次使用的时候,直接拿到就可以。 在日常开发中,如果我们在使用某些细腻度较高的对象时候,都去创建,内存总会有还没有及时销毁的对象,但是依旧占着内存。因此我们需要一种设计来解决这个问题。2. 享元模式 运用共享技术有效地支持大量细.原创 2021-05-08 10:34:00 · 407 阅读 · 0 评论 -
C++实现单例模式
这一类型的模式都很熟悉,都用过,比较简单文章目录1. 单例模式1. 单例模式原创 2021-04-22 20:00:00 · 318 阅读 · 0 评论 -
C++实现建造者模式
本类型的最后一个模式,最后一节进行总结。文章目录1. 建造者模式2. 构建器建造房子3. 大总结1. 建造者模式 将一个复杂的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同(变化)的表示。建造者模式或者说构建起模式,构建过程就是设计模式一直强调的就是依赖稳定,不同的创建表示就是变化。 看到后面的实现过程,可能心中会有一个疑问,**建造者模式和模板方法模式有什么区别?**这个问题其实在实现的过程中也许就已经有答案,我会在最后进行做出自己的解释欢迎探讨。2. 构建器建造房子 假.原创 2021-04-22 15:01:09 · 427 阅读 · 0 评论 -
C++实现原型模式
拷贝构造和原型模式有什么区别?文章目录1. 原型模式2. 克隆动物3. 总结1. 原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。类似于拷贝构造的操作。 当学习这个模式的时候,心里肯定会有一个疑问,就是这个和拷贝构造有什么区别?这个在后面进行解释。2. 克隆动物我们先通过代码,来认识一下原型模式。我们有一个抽象的动物类。class DPAbstra.原创 2021-04-20 16:01:02 · 284 阅读 · 0 评论 -
C++实现抽象工厂模式
源代码仓库地址本篇文章主要用介绍用C++实现的设计模式,博文主要呈现逻辑和结构,单独设计模式的代码在每个模式的的【代码分析】结尾有链接,所有模式的具体源代码请访问上面的仓库地址。文章目录1. 设计模式介绍2. 简单工厂模式2.1 模式介绍2.2 模式图解2.3 代码分析2.4 简单工厂模式总结3. 抽象工厂模式3.1 模式介绍3.2 模式图解3.3 代码分析3.4 抽象工厂模式总结1. 设计模式介绍 设计模式其实是一套提高代码复用性,健壮性,可维护性等一系列优化编程的结局方案,是代码美观,安.原创 2021-04-18 15:52:32 · 643 阅读 · 0 评论 -
C++实现简单工厂模式与工厂方法模式
后面介绍的几种设计模式同属一种类型。由于简单工厂和工厂方法简单和类似,因此先来介绍文章目录1. 简单工厂模式2. 实现手机工厂3. 工厂方法模式4. 工厂方法模式实现手机工厂5. 总结1. 简单工厂模式 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 简单的说就是绕开通过new的这种方式,隐藏创建细节。通过接口来创建对象。2. 实现手机工厂 当前手机市场有众多品牌手机,消费者只在意拿到手机,而不会去在乎一台手机是怎么被生产出来的。直接用.原创 2021-04-17 18:52:19 · 448 阅读 · 2 评论 -
C++实现桥接模式
桥接模式和装饰器模式属于统一个类型,下面来看看文章目录1. 桥接模式2. 手机的APP3. 代码实现4. 大总结1. 桥接模式 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 桥接模式解决的问题其实和装饰器模式解决的问题很类似。在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。2. 手机的APP 举两个个例子来理解一下。 一个APP公司为了让自己APP允许在主流的系统上,当前系统主流有iOS系统、andriod系统、Windows、OS.原创 2021-04-17 16:44:21 · 746 阅读 · 0 评论 -
C++实现装饰器模式
前三种设计模式属于组件协作类模式,下原创 2021-04-16 15:59:09 · 432 阅读 · 0 评论 -
C++实现观察者模式
文章目录1. 观察者模式2. 老板与员工3. 大总结1. 观察者模式 定义对象间的一种一对多(变化)的依赖关系,以便当一 对象(Subject)的状态发生改变时,所有依赖于它的对象都 得到通知并自动更新。 观察者模式是在定义是很好理解的,比如班主任走进教室,教室里面的学生的状态都会发生变化。比如玩手机的把手机收起来,大声说话的安静起来,互相嬉戏的停下来。 在实际的应用中,比如一个APP的主界面定义了四个按钮,当手机的方向发生变化时,按钮的方向也发生变化。2. 老板与员工 假设现在有Q.原创 2021-04-12 17:03:37 · 446 阅读 · 0 评论 -
C++实现策略模式
文章目录1. 策略模式2. 计算器程序3. 策略模式4. 总结1. 策略模式定义一系列算法,把它们一个个封装起来,并且使它们可互 相替换(变化)。该模式使得算法可独立于使用它的客户程 序(稳定)而变化(扩展,子类化)。2. 计算器程序假设现在要写一个计算机的程序,那么一开始可能都会这样写:double calculate(double left, double right, char symbol, char* error) { // 演示不做安全判断 if (symbol == '+'.原创 2021-04-06 20:10:50 · 375 阅读 · 0 评论 -
C++实现模板方法模式
先用一个简单的模式来引入。文章目录1. 须知2. 模板方法模式1. 须知本系列的博文的设计模式类型不从创建型,结构型,行为型三个方向进行介绍,而是从封装变化角度对模式分类。具体分类不在这里说明,而是在适当的时候会进行总结,一并介绍。2. 模板方法模式...原创 2021-04-05 18:02:41 · 438 阅读 · 0 评论 -
C++实现设计模式引入
源代码仓库地址本篇文章主要用介绍用C++实现的设计模式,博文主要呈现逻辑和结构,具体源代码请访问上面的仓库地址。文章目录设计模式介绍工厂模式设计模式介绍设计模式其实是一套提高代码复用性,健壮性,可维护性等一系列优化编程的结局方案,是代码美观,安全。本质就是对面向对象设计原则的实际运用。实现一下设计模式,对其理解会更加深刻,也是对面向对象特性的充分理解。下面的模式介绍,不按照分类,而是从学习的角度去理解和掌握。毕竟即使列出表格也不一定能记住。工厂模式工厂就是制造,用于生产,下面我们来看看一看.原创 2021-03-29 20:32:21 · 654 阅读 · 0 评论