
设计模式
Jimmy1224
这个作者很懒,什么都没留下…
展开
-
如何生成转储(dmp)文件--工具篇
转储文件也就是我们常说的dump文件。可以把转储文件看成软件的某个时刻的一个快照。转储文件一般都是在软件出现问题时手动生成或者程序自动生成。下面我们介绍三种方法生成转储文件,分别如下:一、 任务管理器步骤:先选中发生异常进程,鼠标右键创建转储文件任务管理器创建转储文件不适用于xp系统,但适用于 Win7之后的系统。二、Process ExplorerProcess Expl...转载 2019-11-27 21:11:44 · 4118 阅读 · 0 评论 -
用例图详解
用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下: 1. 参与者(Actor) 表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。 2. 用例(Use Case) 用转载 2017-11-28 23:06:48 · 16235 阅读 · 0 评论 -
C++设计模式之外观模式
模式概述外观模式应用模式总结模式概述外观模式是设计模式中比较常见的一种,该模式提供一个外观类,负责对外打交道的门户,它屏蔽了子系统内部特定的调用关系,简化接口的使用;该模式的定义如下:外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这些接口使得这一子系统更加容易使用. 其基本的结构体如下:在这个结构中包含两个角色,一个是外观类Facade,一个是子系统原创 2017-09-17 16:22:32 · 1283 阅读 · 0 评论 -
C++设计模式之代理模式
模式概述当我们无法访问某个对象、直接访问某个对象存在困难、在访问对象之前增加访问权限验证等情况时,我们可以引入一个代理对象进行间接访问。为了客户端使用的透明性,代理对象和真实对象需要实现共同的接口;代理模式定义如下:代理模式(proxy):为其他对象提供一种代理以控制对这个对象的访问,其基本UML类图如下: 在UML类图中有以下几个角色:CSubject类:定义了CRealSubject类和原创 2017-08-20 12:34:28 · 425 阅读 · 0 评论 -
代理模式vs适配器模式vs外观模式
一、定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。二、理解代理模式和适配器模式应该说很相像,但是他们的区别也很明显,...转载 2017-09-25 21:49:09 · 617 阅读 · 0 评论 -
C++设计模式之观察者模式
模式概述观察者模式又叫做发布-订阅模式(Publish-Subscribe)模式,是使用频率最高的设计模式之一; 在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。观察者模式定义如下:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象原创 2017-09-16 17:47:25 · 411 阅读 · 0 评论 -
C++设计模式之适配器模式
模式概述在软件开发中,系统的数据和行为都正确,但接口不符合时,我们应该考虑使用适配器,目的是使得控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现有的类,但是接口又与复用环境要求不一致的情况,比如在需要早期代码复用一些功能等应用上很有实际价值。适配器模式的定义如下:适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式将使得原本由于接口原创 2017-09-24 21:32:07 · 379 阅读 · 0 评论 -
C++设计模式之抽象工厂模式
抽象工厂概述在抽象工厂模式中,定义了一个抽象工厂类,它提供了创建一组对象的接口,这种模式适合解决多个不同产品系列的问题,抽象工厂定义如下:抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类,其基本UML类图如下: 在抽象工厂模式结构图中包含如下几个角色:AbstractFactory(抽象工厂):它声明了一组用于创建不同类别产品的抽象方法,每一个方法对应一类产品。原创 2017-08-19 18:44:25 · 467 阅读 · 0 评论 -
C++设计模式之工厂方法模式
模拟场景在C++设计模式之简单工厂模式文章中提到简单工厂的不足之处,比如不符合“开闭原则”,工厂类职责重,不易扩展等,比如我们创建对象后,需要从数据库或者文件中获取数据,涉及到较复杂的对象初始过程,又或者需要新增其他的图形类。示例代码如下:static CGraph * CreateGraph(ENUM_DRAW_TYPE type){ CGraph * pGraph = NULL;原创 2017-08-09 22:28:21 · 447 阅读 · 0 评论 -
C++模式设计之策略模式
策略模式概述在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法。在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。策略模式主要目的是将算法的定义与使用分开,也就是将算法的行为和环境分开,将算法的定义放在专门的策略类中,每一个策略类封装了原创 2017-08-13 19:34:22 · 440 阅读 · 0 评论 -
c++设计模式之简单工厂模式
模拟场景要求使用简单工厂模式设计一个可以创建不同几何形状(如矩形、圆形、三角形)的绘图工具,每个几何图形都具有绘制Draw()和擦除Erase()两个方法;UML类图分析需求:首先这个绘图工具要求可以提供一系列的几何图形绘制,包括矩形、圆形、椭圆形、三角形,这些图形对象要求都具备绘制Draw()和Erase()方法;因此,我们可以定义一个抽象基类CGraph,具有Draw()和Erase()的纯虚方原创 2017-08-07 23:09:31 · 1319 阅读 · 0 评论 -
c++版本之单例模式
单例模式(Singleton)是指一个类仅有一个实例对象,并且该类提供一个获得该实例对象的全局访问点,它包含三个关键元素: 元素一:提供private类型的构造函数 元素二:提供private类型的的静态成员变量,以保存唯一的实例对象; 元素三:提供获得本类实例的全局访问点GetInstance函数,它是静态类型的 初级版本根据这三个关键元素可以写出一个基本的单例模式,其代码如下:cla原创 2017-07-09 17:57:10 · 531 阅读 · 0 评论