Welcome 微信登录

首页 / 软件开发 / C++

设计模式的解析和实现(C++)之十六-Strategy模式

设计模式的解析和实现(C++)之十六-Strategy模式

设计模式的解析和实现(C++)之十六-Strategy模式2010-11-06 cppblog 李创作用:定义一系列的,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.解析:简而言之一句话,Strategy模式是对算法的封装.处理一个问题的时候可能有多种算法,这些的接口(输入参数,输出参数等)都是一致的,那么可以考虑采用Strategy模式对这些算法进行封装,在基类中定义一个函数接口就可以了.实现:1)Strateg...
设计模式的解析和实现(C++)之十七-State模式

设计模式的解析和实现(C++)之十七-State模式

设计模式的解析和实现(C++)之十七-State模式2010-11-06 cppblog 李创作用:允许一个对象在其内部状态改变时改变它的行为.UML结构图:解析:State模式主要解决的是在中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对原来的代码进行编译.State模式采用了对这些不同的状态进行封装的方式处理这类问题,...
设计模式的解析和实现(C++)之十八-Iterator模式

设计模式的解析和实现(C++)之十八-Iterator模式

设计模式的解析和实现(C++)之十八-Iterator模式2010-11-06 cppblog 李创作用:提供一种方法顺序访问一个聚合对象中各个元素,,而又不需暴露该对象的内部表示.UML结构图:解析:Iterator几乎是大部分人在初学C++的时候就无意之中接触到的第一种设计模式,因为在STL之中,所有的容器类都有与之相关的迭代器.以前初学STL的时候,时常在看到讲述迭代器作用的时候是这么说的:提供一种方式,使得算法和容器可以独立的变化,而且在访问容器对...
设计模式的解析和实现(C++)之十九-Memento模式

设计模式的解析和实现(C++)之十九-Memento模式

设计模式的解析和实现(C++)之十九-Memento模式2010-11-06 cppblog 李创作用:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.UML结构图:解析:Memento模式中封装的是需要保存的状态,当需要恢复的时候才取出来进行恢复.原理很简单,实现的时候需要注意一个地方:窄接口和宽接口.所谓的宽接口就是一般意义上的接口,把对外的接口作为public成员;而窄接口反之,把...
设计模式的解析和实现(C++)之二十-Visitor模式

设计模式的解析和实现(C++)之二十-Visitor模式

设计模式的解析和实现(C++)之二十-Visitor模式2010-11-06 cppblog 李创作用:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.UML结构图:解析:Visitor模式把对结点的访问封装成一个抽象基类,通过派生出不同的类生成新的访问方式.在实现的时候,在visitor抽象基类中声明了对所有不同结点进行访问的接口函数,如图中的VisitConcreateElementA函数等,这...
设计模式的解析和实现(C++)之二十一-完结篇

设计模式的解析和实现(C++)之二十一-完结篇

设计模式的解析和实现(C++)之二十一-完结篇2010-11-06 cppblog 一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白--我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的"知道原理就可以了"....因为我知道,我还还没有资格说这个话,至少对于设计模式而言我还是一个初学者,唯有踏实和实干才能慢慢的掌握...
利用C++ Builder为计算机增加启动日志

利用C++ Builder为计算机增加启动日志

利用C++ Builder为计算机增加启动日志2010-11-24公用机房或办公室中的计算机通常是大家共享使用的,作为管理者或“主要”使用者很想掌握机器何时被开启使用过,若有一个启动记录就可以随时了解这些情况。本文给出如何用C++ Builder 5实现这样一个程序的编制,使每次启动计算机即执行本程序,在注册表中记录开机时间等信息,以便随时通过注册表编辑器查看。程序特点:每次启动计算机都要执行一次(这一功能由本程序自动完成而不必手工...
教你用C++ Builder实现VFP数据库开发

教你用C++ Builder实现VFP数据库开发

教你用C++ Builder实现VFP数据库开发2010-11-24C++Builder拥有卓越的数据库网络开发功能,可以存取各种关系型数据库,提供高效的数据感知组件和数据存取组件,它不仅可为C/S结构提供客户端程序,而且可开发应用服务器程序,实现多层应用程序体系结构,是VFP数据库进行网络开发的最佳选择。VFP数据库系统有两种方式建立数据表,一种是建立与FoxPro兼容的自由表,另一种是建立数据库,数据库中包含数据表及关系,因此在C++ Builder中...
GRETA正则表达式模板类库

GRETA正则表达式模板类库

GRETA正则表达式模板类库2010-11-24胡金山本文摘要翻译了几篇文章的内容,简单介绍 ATL CAtlRegExp,GRETA, Boost::regex 等正则表达式库,这些表达式库使我们可以方便地利用正则库的 巨大威力,给我们的工作提供了便利。正则表达式语法字符元意义.匹配单个字符[ ]指定一个字符类,匹配方括号内的任意字符。例:[abc] 匹配 "a", "b"或 "c"。^如果^出...
宏的妙用

宏的妙用

宏的妙用2010-11-24阿荣1、概述C++中出了const关键字以后,宏定义常量的功能已经不在被推荐使用。这使 得宏似乎没有了用武之地。实际上,宏还可以做很多事情,笔者也难以全部列举 。这里,仅仅列举几个典型的用法,希望大家能够从中获益。2、实现多环境兼容常见的情况是,我们实现了一个函数,希望它只在某种编译条件满足是被编译和使用。例如,我希望在源码中插入调试语句,以便以Debug方式运行时能够 通过调试信息观察程序运行情况。但是,在产品发售给用户时,我...
Effective STL理解你的排序操作

Effective STL理解你的排序操作

Effective STL理解你的排序操作2010-11-24winter排序一直是数据结构中的常用算法,STL提供的排序算法非常丰富,如何有效 使用就值得探讨。在网上没有找到条款31的翻译,于是我自己翻译了。-- Winter如何进行排序?让我数数有几种方法。一旦程序员需对容 器元素进行排序,sort算法马上就会出现在他的脑海(可能有些程序员会想到 qsort,但详细阅读条款46后,他们会放弃使用qsort的想法,转而使用sort算法 )。sort是一个...
C++中的异常(exception)

C++中的异常(exception)

C++中的异常(exception)2010-11-24张笑猛1.简介异常是由语言提供的运行时刻错误处理的一种方式。提到错误 处理,即使不提到异常,你大概也已经有了丰富的经验,但是为了可以清楚的看 到异常的好处,我们还是不妨来回顾一下常用的以及不常用的错误处理方式。1.1 常用的错误处理方式返回值。我们常用函数的返回值来标志成功或 者失败,甚至是失败的原因。但是这种做法最大的问题是如果调用者不主动检查 返回值也是可以被编译器接受的,你也奈何不了他:) 这在...
C++对象的放置

C++对象的放置

C++对象的放置2010-11-24经历过从c到c++的人,一定想知道c++编译器是如何安排类的成员的.这里我大概的作一下介绍,并有一些代码供你进行测试,希望对大家有点作用吧.其实这里的标题或许有点大了,简单的说,类的非static成员是按照声明的顺序存放在内存区的,而类的static成员和一般的static变量的存储格式一样.我不从简单的东西入手了,直接从一个相对复杂的多重继承的例子入手.看下面的代码:class Point2d{public:int _...
<< 121 122 123 124 125 126 127 128 129 130 >>