设计模式 C++实现
文章平均质量分 77
软件类从业职必修课, 为以后的业务能力提升打好基础; 本专栏主要借助于大话设计和菜鸟里面的相关知识重新归类总结的, 如有需要大话设计等相关pdf书籍, 请对文章进行三连后私聊本人.
落子无悔!
念念不忘,必有回响.不积小流,无以成江海.
展开
-
C++设计模式 命令模式(服务员命令厨师)
文章目录1. 基础知识2. 逻辑代码3. 应用3.1 服务员命令厨师上菜1. 基础知识命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式,将一个请求封装成一个对象, 从而使你可用不同的请求对客户进行参数化, 对请求排队或记录请求日志, 以及支持可撤销的操作意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。原创 2021-10-18 11:30:39 · 240 阅读 · 0 评论 -
C++设计模式 迭代器模式
文章目录1. 理论基础2. 逻辑代码3. 应用1. 理论基础2. 逻辑代码template<class T>class Iterator;template<class T>class ConcreteIterator;template<class T>class Aggregate;template<class T>class ConcreteAggregate;// 聚集抽象类template<class T>原创 2021-10-05 21:13:23 · 2190 阅读 · 0 评论 -
C++ 设计模式 适配器模式(中英翻译, Win-Linux翻译)
文章目录1. 理论基础2. 逻辑代码3. 应用3.1 Linux→Windows3.2 外籍球员不懂英文怎么解决1. 理论基础意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用:1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,原创 2021-10-05 11:45:16 · 2015 阅读 · 0 评论 -
C++ 设计模式 建造者模式(复杂对象的构建与其表示分离)肯德基不同烧鸡的制作过程
文章目录1. 理论基础2. 逻辑代码3. 应用3.1 做汉堡咯思考:为何肯德基麦当劳这些快餐能在中国这个上下五千年的国都站住脚? 中国的鱼香肉丝为何不能成为令人追捧的快餐?因为麦当劳肯德基使用的是统一制造的快餐, 也就相当于厨师是一个厨师, 而中国的饭店每个都有鱼香肉丝, 但是中国的饭店每个店的厨师都不相同, 鱼香肉丝的味道也各不相同, 正是因为这样的差别, 我们不确定未吃过的店里面的鱼香肉丝是否使我们想吃的, 而肯德基我们不管在哪家店, 吃的汉堡都是一个味道的, 只要喜欢吃, 任意哪家的都可以吃;原创 2021-10-05 09:25:45 · 2295 阅读 · 0 评论 -
C++设计模式 外观模式(复杂系统的对外的API)
文章目录1. 理论基础2. 模板代码3. 应用3.1 基金操作什么时候使用外观模式好呢?首先在设计初期, 应该要有意识的将不同的两层进行分离, 比如经典三层架构, 就需要考虑数据访问层和业务逻辑层, 表示层的层与层之间建立外观facede, 这样可以为复杂的子系统提供一个简单地接口, 使得耦合大大降低其次, 开发阶段, 子系统往往因为不断重构演化而变得越来越复杂, 大多数的模式使用都会产生很多很小的类, 这本是好事情, 但是也给外部调用的客户带来了使用的困难, 因此增加外观Facede, 可以提供一原创 2021-10-04 20:34:06 · 2129 阅读 · 0 评论 -
C++设计模式 模板方法模式(多态)
文章目录1. 理论知识2. 逻辑模板代码3. 应用1. 理论知识模板方法模式:定义一个操作中的算法骨架, 而将一些步骤延迟到子类中, 模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤应用实例:1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。2、西游记里面菩萨定好的 81 难,这就是一个顶层的逻辑骨架。3、spring 中对 Hibernate 的支持,将一些已经定好的方法封装起来,比如开启事务、获取 Session、关闭 Session原创 2021-10-04 18:09:21 · 2179 阅读 · 0 评论 -
C++ 模式设计 原型模式(深拷贝/克隆)
文章目录1. 理论知识2. 逻辑模板代码3. 应用3.1 应用1: 改写简历3.2 深浅拷贝的问题 ==*==3.3 深拷贝的嵌套使用思考: 原型模式跟装饰器模式的区别?本文核心: WorkExperience* clone(){ WorkExperience *w = new WorkExperience(); *w = *this; // 深拷贝一个相同的自己, 注意如果this中有指针, 需要在对这个指针类进行clone方法的实现, 这样层层嵌套, 就实现了整体的深拷贝原创 2021-10-04 17:22:51 · 3236 阅读 · 0 评论 -
C++设计模式 代理模式
文章目录1. 代理模式的理论1.1 应用场景2. 逻辑代码3. 具体应用1. 代理模式的理论1.1 应用场景远程代理: 为一个对象在不同地址空间提供局部代表, 这样就可以隐藏一个对象存在于不同地址空间的事实 比如引用web时, 代理会在项目中生成一个webReference文件夹和一些文件, 使得客户端程序调用代理就可以解决远程访问问题虚拟代理: 是根据需要创建开销很大的对象, 通过他来存放实例化需要很长时间的真实对象 比如打开一个很大的的HTML页面, 里面有很多文字和图片, 但是我们还能很快原创 2021-10-03 17:26:56 · 2013 阅读 · 0 评论 -
C++设计模式 装饰器模式
文章目录1. 先验知识2. 装饰器模式相关概念3. 装饰器模式的应用3.1 应用1: 给形状添加新的特征 不同形状加红学习设计模式的主要目的是为了学习整个软件开发的思维逻辑, 这是上百年程序员大佬们总结出来的精华, 就像学好数理化走遍天下都不怕是一个逻辑, 我永远相信, 业务开发跟设计模式息息相关, 个人思维逻辑与算法息息相关, 活到老, 学到老, 与君共勉即努力.平台 win10子系统 Ubuntu18.04编译器 gcc dbg编辑器 VScode1. 先验知识子类继承父类初始化父类:原创 2021-10-03 13:55:35 · 2433 阅读 · 0 评论 -
C++设计模式 观察者模式(发布者给订阅者发通知)
观察者模式: ObserverPattern定义对象间的一种一对多依赖关系, 使得每当一个对象状态发生改变时, 其相关依赖对象皆得到通知并自动更新应用最经典的应用就是我们订阅邮件, 当有新的文章发表, 发布者会通过邮件给我们这些订阅者发送通知, 我们就知道了更新的文章核心创建list链表保存所有的观察者基类指针创建state状态标志位, 状态转换后通知更新给所有的观察者代码示例#include <iostream>#include <algorithm> //原创 2021-09-07 10:57:37 · 2227 阅读 · 0 评论 -
C++设计模式2 单例模式
文章目录快乐快乐原创 2021-04-13 22:52:38 · 1883 阅读 · 0 评论 -
C++设计模式1 三种工厂模式
文章目录核心: 多态1. 简单工厂1.1. 什么是简单工厂模式?1.2. 模式中包含的角色与职责1.3. 简单工厂的优缺点1.4. 示例2. 工厂模式2.1. 概念2.2. 类图角色和职责2.3. 工厂方法模式和简单工厂模式比较2.4. 示例3. 抽象工厂3.1. 概念3.2. 产品族和产品等级结构3.3. 模式中包含的角色和职责3.4. 示例核心: 多态1. 简单工厂1.1. 什么是简单工厂模式?简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创原创 2021-04-13 22:39:29 · 2058 阅读 · 0 评论 -
C++ 设计模式 桥接模式(不同手机品牌不同手机软件框架不同软件)
文章目录1 理论基础2. 逻辑代码3. 真实应用3.1 手机系统1 理论基础意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。关键代码:抽象类依赖实现类。应用实例:1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者原创 2021-10-08 11:44:29 · 1711 阅读 · 0 评论 -
UML关系实现: 泛化、实现、依赖、关联、聚合、组合
文章目录1. UML六种箭头的含义2. UML六种分类的实例3. 使用腾讯文档里面的流程图里面选UML就行了1. UML六种箭头的含义2. UML六种分类的实例下面的例子中, Person是抽象类, father和mather继承person类, son是派生类, 继承father类另一个单独的类home, 里面包含father,mather,son三个对象, car和land两个对象, 其中father对象是在home创建对象的时候构造函数中创建的, mather是传入进home的, son是h原创 2021-10-07 20:51:18 · 2784 阅读 · 0 评论 -
C++设计模式基础和模式设计基本原则
文章目录1. 设计模式前言1.1. 模式1.2. 设计模式(Design pattern)1.3. 设计模式的分类1.4. 具体分类1.5. 设计模式基本原则1. 设计模式前言1.1. 模式在一定环境中解决某一问题的方案,包括三个基本元素–(问题,解决方案,环境)。即: 在一定环境下,用固定套路解决问题。1.2. 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。 毫转载 2021-04-11 09:40:55 · 2239 阅读 · 0 评论