自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

转载 访问者模式

一、简介1. 定义表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。2. 应用场景(1)对象结构比较稳定,但经常需要在此对象结构上定义新的操作。(2)希望在不修改原有类的前提下,实现对该对象内部的一些操作。3. 优点(1)可以通过增加具体访问者类实现新的访问操作,对修改封闭,符合开闭原则。(2)将不同的...

2019-03-24 22:33:00 128

转载 迭代器模式

一、简介1. 定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。2. 应用场景1)访问一个聚合对象的内容而无需暴露它的内部表示;2)提供对聚合对象的多种遍历;3)为遍历不同的聚合结构提供一个统一的接口,即支持多态迭代。3. 优点1)简化了类的聚合接口;2)封装了对象的内部数据,降低耦合;3)应用广泛,现在很多的库都提供了迭代功能,不需要程序员再重复造轮子...

2019-02-16 13:31:00 123

转载 解释器模式

一、简介1. 定义 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2. 应用场景本模式适用于处理运算式等字符串的解析操作。3. 优点提供灵活的表达式解析处理方式,通过封装的对外接口,调用者可以不再关心具体的表达式处理规则。4. 缺点使用递归编码,需要在实现过程中注意递归的返回条件。二、类图1. 设计模...

2019-01-30 20:48:00 115

转载 模板模式

一、简介  模板设计模式的设计思路比较简单,核心是将不变的逻辑放在基类中处理,在子类中使用虚函数实现变动的方法。它是开发人员使用很频繁的一种模式,往往在代码重构提取基类的过程中就会使用到这种设计模式的思路。1. 模板设计模式类图  如上图,抽象父类用于实现软件功能中的算法的框架,子类差异化的实现算法流程中的某个具体的细节。三、代码示例  在组装电脑的过程中,我们可...

2019-01-13 22:37:00 77

转载 建造者模式

1. 在C++中,如果在类的构造函数中调用虚函数时,使用的是静态绑定。2. 建造者模式让对象的表示与构建相分离。一、简介建造者模式是当创建复杂对象的流程应该独立与该对象的组成部分以及他们的装配方式时适用的模式。本模式使得同样的构建过程可以创建不同的对象。1. 优点:1)隔离了构建的步骤和具体的实现,为产品的具体实现提供了灵活度。2)封装和抽象了每个步骤的实现,实现了依赖倒转原则。3)封装...

2019-01-06 21:19:00 95

转载 中介者模式

一、简介1. 定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 应用场景适用于系统中大量的对象需要相互的依赖,并且彼此间的依赖关系复杂混乱,此时在重构过程中,可以用一个中间类来管理这些对象之间的依赖关系。3.优缺点优点:将多个互相依赖的类进行解耦,使得这些有交互的对象松耦合;增加交互对象时,只需要在中介...

2019-01-02 22:14:00 63

转载 状态模式

一、什么是状态模式 1. 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。  状态模式主要是为了消除庞大的条件分支语句,将各种状态转移逻辑分布到State的子类之间,减少相互间的依赖。2.应用场合  当一个对象的行为取...

2018-12-22 14:37:00 99

转载 外观模式

外观模式较为简单,其类图如下:  外观模式的使用场景分为三个阶段;  首先,在设计初期,应该有意识的将不同的两个层分离;  其次,在开发阶段,子系统往往由于不断的重构演化变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们之间的依赖;  第三,在维护一个遗留的大型系统的时候,可能这个系统已经难以维护和扩展了,如果此时需要增加新的需求,那么可以为原系统开发一个外观F...

2018-12-22 14:34:00 82

转载 观察者模式

一、简介1. 概念GOF的《设计模式》这样定义观察模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。2. 目的解决多个对象同时关系一个实体的变更状态的问题。3...

2018-12-16 11:31:00 103

转载 原型模式

一、什么是原型模式1. 简介原型模式类似于工厂模式,同样也提供了隔离对象与使用者之间的耦合关系,绕开了new的过程,但是需要这些具体的对象有稳定的接口。原型模式采用克隆的方式动态的创建拥有某些具有稳定接口的新对象,使用的方法只需要注册一个原型对象,并且在需要此类对象的时候进行clone即可。2. 应用场景原型模式的设计目的有:利用拷贝替换构造对象,提升效率;避免了重复new相同对象的...

2018-12-07 09:48:00 59

转载 装饰模式

一、何为装饰模式1. 定义顾名思义,装饰模式就是为原有的对象添加不同的装饰,使得原有对象具备更加完善的功能。2. 应用场合在原有代码基础上进行重构或者添加一些新的职责时,为了尽可能的不修改原有代码或者提高原有类的复杂度,可以使用装饰者模式。装饰者模式可以提供以下功能:1)在不影响类的其他对象的前提下,动态的给指定对象添加职责;2)动态的为一个对象添加或者删除功能;...

2018-11-25 21:34:00 68

转载 设计模式--单例模式

一、单例1. 内部变量使用规则:关于多个线程同时调用单例模式的对象,该对象中方法的局部变量是否会受多个线程的影响对于那些会以多线程运行的单例类,例如Web应用中的Servlet,每个方法中对局部变量的操作都是在线程自己独立的内存区域内完成的,所以是线程安全的。对于成员变量的操作,可以使用ThreadLocal来保证线程安全。局部变量不会受多线程影响成员变量会受到...

2018-11-18 22:04:00 99

转载 Modbus串行通信

一、Modbus通信协议简介1. Modbus协议 Modbus 是一个请求/应答协议,并且提供功能码规定的服务。Modbu协议是 OSI 模型第 7 层上的应用层报文传输协议。 MODBUS协议支持传统的RS-232、RS-422、RS-485和以太网设备。Modbus 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。...

2018-11-13 22:10:00 445

转载 函数内存分配

在最近的代码调试中,遇到一个比较棘手的崩溃问题,现象为程序在函数的返回值处崩溃,报警提示如图:经过排查,最终发现在对结构体内数组初始化赋值时出现了数组越界现象,导致函数在返回时出现异常,导致程序崩溃,借此机会,对内存栈内空间的函数占用空间总结学习:1. 进程的内存布局 对于一个进程来说,它在内存中的布局如下所示:  代码区与常量区等不再赘述,堆区是由代码动态的申请...

2018-11-13 21:52:00 216

转载 关键字--static

C++中的关键字static有两种用法,分别为面向过程编程的static和面向对象的static。·static在面向过程编程中的应用1. 在全局变量前加上static关键字,该全局变量被声明为静态全局变量,这样使得该变量有了以下的特性:  1)该变量的内存分配在全局数据区域;  2)在声明它的整个文件中该变量都是可以使用的,但是仅限于该文件中。  3)系统会将未初始...

2017-12-23 16:43:00 71

转载 Linux的环境配置文件----.bashrc文件

.bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。它是一个隐藏文件,需要使用ls -a来查看。 .bash_history 记录之前输入的命令 .bash_logout 当你退出时执行的命令 .bash_profile 当你登入shell时执行 .bashrc...

2017-12-21 16:27:00 248

转载 常量指针与指针常量

常量指针与指针常量是两个很容易被混淆的概念,他们的核心是const关键字,const限定一个变量不允许被改变。const在一定程度上可以提高程序的安全性和可靠性。一、常量指针顾名思义,是一个被常量修饰的指针,意味着const去修饰一个*p,所以常量指针的本质是指针,表示这个指针时一个指向常量的指针,因此指针指向的空间中的内容是不能改变的。指针常量通常的书写格式如下:(两种格式等价...

2017-12-09 16:19:00 72

转载 自定义数据类型使用QVariant转换的方法

  QVariant类型的放入和取出必须是相对应的,你放入一个int就必须按int取出,不能用toString(), Qt不会帮你自动转换。数据核心无非就是一个 union,和一个标记类型的type:传递的是整数 123,那么它union存储整数123,同时type标志Int;如果传递字符串,union存储字符串的指针,同时type标志QString。QVariant 属于 Qt...

2017-12-06 18:02:00 584

转载 #ifdef __cplusplus

引自:https://www.cnblogs.com/stonecrazyking/archive/2006/09/23/512552.html看到一篇总结很到位的文章,记录一下。  时常在cpp的代码之中看到这样的代码:#ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif  ...

2017-11-28 10:45:00 58

转载 C++ 资源大全中文版

标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统的C标准库规范ISO C++ Standar...

2017-11-26 22:05:00 79

转载 #pragma once 与 #ifndef

1. #pragma once这个宏有什么作用?为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。2. 两者各有何特点?(1)#ifndef#ifndef的方式受C/C++语言标准支持。它不仅可...

2017-11-26 21:39:00 1438

转载 MVC架构之delegate

Qt的MVC架构可以实现很多数据显示的功能,本次主要对代理进行一个总结:重实现QStyledItemDelegate类,实现自定义类。(1)ComboxDelegate.h#ifndef COMBODELEGATE_H#define COMBODELEGATE_H#include <QStyledItemDelegate>class Com...

2017-11-26 16:54:00 66

转载 函数指针的声明

typedef函数指针的声明与其他类型的声明有所不同,主要遵守右左法则,具体的解释如下:1.1 解读的原则---右左原则: 右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 个人认为最开始应该是从需要定义的标识符开始阅读(当然有可能所有的需要定义的...

2017-11-23 14:47:00 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除