C++设计模式
m_wordPlan
这个作者很懒,什么都没留下…
展开
-
C++设计模式之备忘录模式
目录1.设计目的2.UML设计3.代码实现4.应用场景1.设计目的主要为了解决类似于撤销的问题。2.UML设计以文本撤销为例3.代码实现代码地址:https://github.com/luozichao324/Design-Patterns/tree/main/Snapshot/SnapShot4.应用场景a) 当你需要创建对象状态快照来恢复其之前的状态时,可以使用备忘录模式。b) 当直接访问对象的成员变量、获取器或设置器将导致封装被突破时,...原创 2020-12-24 19:19:20 · 109 阅读 · 1 评论 -
C++设计模式之观察者模式
目录1.设计目的2.设计UML3.实现代码4.应用场景1.设计目的观察者模式属于行为设计模式,是一种发布-订阅的机制,可以为事件的发布者和订阅者解耦,无需修改发布者代码就能引入新的订阅者类,可以在运行时建立对象之间的联系。2.设计UML以 UI文本编辑为例:UI输入变化后,将变化的字符串保存到日志文件中,同时也将该字符串发送给云端服务器3.实现代码见代码地址:https://github.com/luozichao324/Design-Patter..原创 2020-12-24 15:49:33 · 172 阅读 · 0 评论 -
C++设计模式之中介者模式
1.设计目的2.UML设计3.代码实现4.总结原创 2020-11-25 15:31:24 · 124 阅读 · 0 评论 -
C++ 设计模式之命令模式
1. 设计目的将发送者操作与接收者逻辑作解耦,使接收者的输出结果更加的灵活多变.比如,UI界面操作, UI(发送者)点击5s后显示按钮, 直接调用就需要改写显示逻辑对象,添加5s后显示的方法;可如果添加个命令对象,将UI的命令打包给命令对象,那么就可以把5s延时在命令对象里添加.而不用修改显示对象,这样显示对象的职能更单一.2. 设计原理a) 在发送者与接收者之间添加一个命令管理对象(Invoker)和命令类. 发送者操作命令管理对象,名利管理对象管理命令类实例.命令类关联到接受者.b) 命原创 2020-11-13 16:17:30 · 197 阅读 · 0 评论 -
C++设计模式之代理模式
目录设计目的UML设计代码实现总结设计目的代理模式的主要结构其中代理类主要用来:延迟初始化、记录日志、访问控制和缓存等辅助性工作。代理会代表它所代理的对象,并对整个生命周期进行管理。UML设计代码实现代码地址:https://github.com/luozichao324/Design-Patterns/tree/main/Proxy/Proxy总结几种常见的应用场景:a)延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,...原创 2020-11-12 15:03:02 · 112 阅读 · 0 评论 -
C++ 设计模式之责任链模式
目录1. 设计目的2. 设计UML3. 总结1. 设计目的主要是为了解决,多种层级执行(判断)下的代码看似混乱难理解的问题。比如:在做用户信息甄别的时候,需要判断用户名和密码是否正确,再看是否是管理员,再看是否是多个登陆IP的操作。。。这样的层层判断会显得代码很臃肿,不利于复用和维护。解决思路:将每层判断抽象成一个类,这些类统一继承一个或(顺序继承)下来。每个继承的对象需要有下一层对象 这样的属性,便于继续下一层的责任判断。2. 设计UML3. 总结优点:你可以.原创 2020-11-12 11:43:28 · 105 阅读 · 0 评论 -
C++设计模式之享元模式
1. 设计目的解决程序必须支持大量对象且没有足够的内存容量问题。应用该模式所获的收益大小取决于使用它的方式和情景。它在下列情况中最有效:程序需要生成数量巨大的相似对象 这将耗尽目标设备的所有内存 对象中包含可抽取且能在多个对象间共享的重复状态实现原理: 将需要改写为享元的类成员变量拆分为两个部分: a) 内在状态:包含不变的、可在许多对象中重复使用的数据的成员变量。 b) 外在状态:包含每个对象各自不同的情景数据的成员变量。 ...原创 2020-11-11 18:54:34 · 141 阅读 · 0 评论 -
C++设计模式之桥接模式
目录1. 设计目的2. UML设计3. 代码实现4. 总结1. 设计目的将特定接口-平台的组合代码抽取到独立的类中,以在混乱中建立一些秩序。将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。如:颜色与形状的搭配,蓝色的矩形,红色的圆形。2. UML设计同样以颜色和形状为例:3. 代码实现代码实现见网址:https://github.com/luozichao324/Design-Patterns/tree/main...原创 2020-11-11 11:54:53 · 104 阅读 · 1 评论 -
C++设计模式之适配器模式
目录1.设计目的2.UML设计3. 代码实现4. 总结4.1 应用场景4.2 优点与缺点1.设计目的软件开发中,经常会遇到模块接口不同兼容的情况,如,提供者参数类型时xml格式,而调用者的使用数据类型时JSON,此时就需要使用方法将这两个接口适配下。而在适配的过程中,还不要影响到业务的代码结构,也让这个适配过程具有一定的扩展性,方便扩展其他的数据类型或者属性结构。所以引入适配器模式,添加适配对象。2.UML设计以经典的“方钉与圆孔”为例子,方钉向插入圆孔.原创 2020-11-10 17:56:44 · 115 阅读 · 0 评论 -
C++ 设计模式之建造者模式(生成器模式)
1. 设计目的1.一个复杂对象,在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中;甚至还有更糟糕的情况,那就是这些代码散落在客户端代码的多个位置。2.当你需要创建不同形式的产品时,其中的一些构造步骤可能需要不同的实现,那么对象的有些定义会显多余。3.生成器模式建议将对象构造代码从产品类中抽取出来,并将其放在一个名为生成器的独立对象中。每个生成器对象都会按照产品的自身特性去创建流程,去按照特有的设置顺...原创 2020-11-10 11:52:45 · 288 阅读 · 0 评论 -
C++设计模式之模板方法模式
C++设计模式之模板方法模式目录C++设计模式之模板方法模式1.设计目的2.设计UML3.代码实现1.设计目的完成在某一细节层次一致的一个过程或一系列步骤,但个别步骤在更细节的层次上实现可能不同,我们就会采用模板方法模式.2.设计UML其中 void templateMethod() 函数顺序调用operation1()和operation2()方法.3.代码实现//.h文件#ifndef TEMPLATEMETHODINTERFACE_H#define原创 2020-08-12 20:51:44 · 149 阅读 · 0 评论 -
C++ 设计模式之装饰模式
C++ 设计模式之装饰模式目录C++ 设计模式之装饰模式设计目的UML设计代码实现设计目的动态地给一个对象添加一些额外的功能。就增加功能来说,继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀,反之装饰模式可以在不想增加很多子类的情况下扩展类。UML设计以绘制彩色形状为例:代码实现//.h文件#ifndef SHAPE_H#define SHAPE_H#include <QObject>class Shape : .原创 2020-06-17 21:52:38 · 234 阅读 · 0 评论 -
C++设计模式之组合模式
组合模式注:本文中使用的C++ QT框架目录组合模式1. 设计目的2. UML设计3. 代码实现1. 设计目的是为了解决树型结构中,需要向客户端提供一致的操作接口,使得客户端操作忽略简单元素与复杂元素的方案。比如:在 操作XML文件时,客户端希望操作XML节点和操作文本值的接口是一样的,从而不用去关系如何设置节点或如何设置文本值。2. UML设计以操作xml...原创 2020-04-10 20:15:31 · 183 阅读 · 0 评论 -
C++ 设计模式之遵循原则
目录设计模式之遵循原则1. 单一职责原则(SRP)1.1 设计目的1.2 定义1.3 应用2. 开放-封闭原则(OCP)2.1 设计目的2.2 定义2.3 应用3. 依赖倒转原则3.1 设计目的3.2 定义3.3 应用4. 迪米特法则(LoD,最少知识原则)4.1 设计目的4.2 定义4.3 应用设计模式之遵循原则注...原创 2020-01-19 16:30:40 · 339 阅读 · 0 评论 -
C++ 设计模式之策略模式
定义:策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现方法不同,它可以以相同的方式调用所有的算法,减少各个算法类与使用算法类之间的耦合。直接上图,代码麻烦,还不易理解, 下图以结算台为例...原创 2019-09-26 19:01:25 · 128 阅读 · 0 评论 -
C++设计模式之工厂模式
参考原文:https://www.cnblogs.com/chengjundu/p/8473564.html工厂模式分为简单工厂模式,工厂方法模式,抽象工厂模式。目录工厂模式1 简单工厂模式1.1 概述1.2 代码描述:1.3 UML描述2. 工厂方法模式2.1 概述2.2 代码描述2.3 UML描述3. 抽象工厂模式3.1 概述3.2 代码...原创 2019-08-12 23:06:00 · 256 阅读 · 0 评论 -
C++ 设计模式之UML对象与类的相互关系
对象与类之间的互相关系方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。其中关系由弱到强: 依赖<关联<聚合<组合<实现=泛化。原创 2019-08-03 12:02:50 · 541 阅读 · 0 评论