软件架构
文章平均质量分 80
pandaxcl
这个作者很懒,什么都没留下…
展开
-
撤销和重做(Undo和Redo)的C++完美实现(1)
经过一年多的时间的摸索,终于找到了一种比较完美的撤销和重做(Undo和Redo)的C++实现方案,因为现在很多的应用程序都需要这种功能,所以我将我的经历写出来让大家分享,同时也能够让更多的人帮助我来更加完善这种架构,同时也能够让更多的人能够利用这种架构更好的完成它的程序。这种架构充分利用了STL的容器和算法来简化代码,因此有着比较高的正确性和可读性。 在解析我的架构之前原创 2006-04-02 12:30:00 · 4408 阅读 · 0 评论 -
自动化C++程序设计---分析C++类结构
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:49:00 · 3407 阅读 · 0 评论 -
自动化C++程序设计---基础篇_分析C++重载函数(1)--分析函数参数的数量
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:52:00 · 1987 阅读 · 0 评论 -
自动化C++程序设计---分析C++类层次
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:45:00 · 2399 阅读 · 1 评论 -
自动化C++程序设计---基础篇_分析C++重载函数(2)--分析函数参数的种类
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:55:00 · 1864 阅读 · 0 评论 -
自动化C++程序设计---基础篇_分析C++重载函数(3)--存在的问题
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:58:00 · 2165 阅读 · 4 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(2)---撤销和重做原理
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 21:16:00 · 2803 阅读 · 0 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(4)---将撤销和重做的基本架构模组化
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 21:21:00 · 2222 阅读 · 0 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(5)---处理多类型的对象以及命令管理
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 21:23:00 · 2073 阅读 · 0 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(6)---扩展的框架代码
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 21:26:00 · 2555 阅读 · 1 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(3)---撤销和重做的基本架构
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 21:19:00 · 2628 阅读 · 5 评论 -
应用篇_撤销(Undo)和重做(Redo)的C++自动化实现(1)---交换函数swap功能的讨论
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-11 20:32:00 · 2349 阅读 · 2 评论 -
自动化C++程序设计---C++里的模板语言
/*<![CDATA[*/body { color: #000; background-color: #fff; margin: 0px 10%; min-width: 720px; font-family: 新宋体; counter-reset: chapter section subsection subsubsection paragraph lchapt原创 2007-10-23 21:42:00 · 2961 阅读 · 0 评论 -
Undo(Redo)撤销和重做代码的最后测试文件(相当于文档)
本文是之前写过的撤销和重做库的一份比较完整的测试文档,可以当作文档来使用,不过不知道应该如何在这个博客里面链接完整代码,所以需要代码的朋友可以到 CSDN的下载频道去下载(pandaxcl.rar),或者来邮件索取,如果您使用了我的代码,请麻烦通知一声,我会非常欣慰的:) #include #include #include "test.h"#include "undo/command.h原创 2006-12-31 23:02:00 · 1915 阅读 · 0 评论 -
采用最一般的序列化方法生成有特殊序列化顺序要求的格式文件的方法
#if 0封装操作在创建文件格式上面的作用#endif#if 0封装操作,我的理解是封装了函数调用并且能够延迟调用的一个变量!这种方式在C/C++里面就有好多种:函数指针,仿函数。实际上我们编写程序的过程就是一个设计函数调用顺序的过程。#endif#if 0通常的情况是我们将函数调用顺序以静态编码的形式写死了:#endif#ifdef SAMPLE1#include using namesp原创 2006-11-30 00:53:00 · 1831 阅读 · 1 评论 -
撤销和重做(Undo和Redo)的C++完美实现(2)
通过前面的讨论,我们所希望的是具备有“仿函数保存反操作法”的时间和空间优势,但是又不希望有“仿函数保存反操作法”的书写反操作的繁琐过程,另外还要保证代码的组织非常简洁,当然这是为了方便维护了:)#if 0 在前面的章节中讨论了目前常见的实现撤销和重做的方案,其中的仿函数保存反操作的方案的空间和时间优势非常吸引人,但是需要为每一个操作实现一个反操作,这个过程非常的繁琐,而且容易出错;更何况原创 2006-04-03 10:26:00 · 3563 阅读 · 3 评论 -
C++中使用STL轻松实现序列化
#if 0 在用C++编写应用程序的过程中,经常涉及到序列化的问题,但是序列化的问题通常都会有非常繁琐的过程代码需要书写,本文中就是通过简单的步骤实现了程序的序列化问题,简单直接,和其它的序列化方案有着很大的不同。 首先来看看简单的数据写入文件和从文件读入数据的代码: 特别注解:本人特别喜欢用STL来书写代码,一方面是便于移植,但是另一方却是在于用STL书写的代码简单直接,可读性原创 2006-04-03 21:59:00 · 10822 阅读 · 8 评论 -
撤销和重做(Undo和Redo)的C++完美实现(3)
#if 0 在上一篇文章中,已经对三种基本操作的撤销和重做进行了细致的分析,并给出了示例代码,但是并没能够给出复合操作的示例代码。这里面有着比较深刻的原因,具体来说就是:复合操作里面保存的是三个基本操作以及子复合操作的任意组合,这里面本身就存在一个将三个基本操作和复合操作对象化的概念,在三个基本操作实现对象化之前是不能够讨论复合操作的!既然需要对三个基本操作进行对象化,同时还应该看到:复合操原创 2006-04-04 14:48:00 · 2765 阅读 · 4 评论 -
撤销和重做(Undo和Redo)的C++完美实现(4)
#if 0 在上一篇文章中已经成功的将三个基本操作封装为三个基本命令,同时也将一个复合操作封装成了一个复合命令,另外也给出了简单的使用代码;从代码中可以看出,撤销和重做的过程还是比较晦涩,用户为了表达撤销和重做的过程还需要编写很多的额外代码,而且这种代码也没有很直接的表达撤销和重做的思想。为了更好的表达撤销和重做机制,并且更加简化客户端代码的书写,在本章中将会对前一章中给出的代码进行更深入的原创 2006-04-07 13:22:00 · 2926 阅读 · 3 评论 -
撤销和重做(Undo和Redo)的C++完美实现(5)
#if 0 在前一章中已经成功的封装了三个基本操作成为基本命令,同时也封装了复合操作成为复合命令,另外对这些基本的命令的使用进行了更进一步的封装,使得客户端编写的代码更易理解。虽然已经基本上具备了编写撤销和重做的能力,但是使用的时候还是会因为不能够准确的分配相应的标识号而困扰。因此在本章中对标识号进行系统的讨论;并给出相应的实现和测试代码。 首先需要知道标识号应当达到的目标: (原创 2006-04-12 12:51:00 · 1887 阅读 · 2 评论 -
撤销和重做(Undo和Redo)的C++完美实现(6)
#if 0 在前面的章节中我们讨论的对象都是简单对象,那么什么是简单对象呢?关于这个问题,首先还是先关注一下C++语言里面的基本类型。C++语言里面的基本类型如下: char (signed,unsigned) int (signed,unsigned) short (signed,unsigned) long (signed,unsigned) flo原创 2006-04-15 16:32:00 · 2689 阅读 · 5 评论 -
撤销和重做(Undo和Redo)的C++完美实现(8-A)
#if 0 在上一章里面已经成功的封装了复合类型,基本上已经具备了应用的基础。在这一章里面将会尝试对前面讨论的简单类型和复合类型进行应用,同时也是进一步的进行封装的过程。通过提供一个统一的应用界面就可以使客户端不必区别处理简单类型和复合类型之间的各个操作的不同,而是由库来处理这种不同,这正是体现C++自动化(模板元)编程的优势的时候了。在这一章中将会讨论这个封装过程。#endif#ifdef原创 2006-04-23 17:09:00 · 1618 阅读 · 0 评论 -
撤销和重做(Undo和Redo)的C++完美实现(7-B)
#if 0 在这一章里面将会讲解如何派生上一章里面所讲解的复合类,生成自己特殊的复合类。生成这种特殊的复合类的派生类的目的就是为了方便使用者能够方便的添加自己的操作,同时也是为了生成相应的类型。实际上需要对前一篇文章里面的的compound类进行修改,参见代码CODE1:#endif#ifdef CODE1#include #include "command.h"#include "cent原创 2006-04-22 12:48:00 · 1465 阅读 · 1 评论 -
撤销和重做(Undo和Redo)的C++完美实现(7-A)
#if 0 在上一章里面讨论了复合对象的问题。RoundRectangle类(b)方案是一个复合类方案,从上一章的内容我们可以看出虽然实现了一个RoundRectangle类确实是一个复合类,但是实现复合类是一个比较繁琐的事情,对于一个程序里面有很多这种类的情况,那么前一章里面的编码过程将会是一个非常繁琐的体力劳动。在这一章里面将使用模板元编程将这种繁琐的体力劳动自动化。 在给出实现之原创 2006-04-20 09:43:00 · 4704 阅读 · 11 评论 -
撤销和重做(Undo和Redo)的C++完美实现(8-B)
#if 0 本来这一章是要讨论对前一章里面封装的控制面板类进行STL算法兼容性讨论的,但是在讨论这个问题之前发现前一章里面对客户端的代码编写有一个特别的要求:简单类型和复合类型必须用前一章里面的分隔符进行分隔,这就要对客户端编码规范进行限制。这是一个对库的使用者的限制,但是本撤销和重做库的目标之一就是尽可能少的给出使用该库的规则,降低库的使用者的使用门槛。因此也就自然而然的想到了,这个额外的原创 2006-04-24 10:41:00 · 1749 阅读 · 1 评论 -
撤销和重做(Undo和Redo)的C++完美实现(9)
#if 0 在这一章里面将会讨论到该撤销和重做库的序列化问题。序列化几乎是每一个应用程序中都会考虑到的问题,在本系列文档的开始就已经提到了该撤销和重做库天生具备了序列化能力,那么在本文中将会详细的讨论序列化的问题。并且尽可能的给出非常具有弹性的序列化框架。 为了保证该序列化框架的弹性,我将该序列化框架分为三大部分: (1)档案类,专门负责档案格式的 (2)序列化类,专门负责原创 2006-04-28 18:15:00 · 2268 阅读 · 2 评论 -
配合STL算法编写类的成员函数
配合STL算法编写类的成员函数 我们在使用C++的开发工作中,经常会编写许许多多的类,当然也会编写大量的成员函数。但是对于如何设计类的结构,如何确定类的成员,这将会是一个艰难的抉择过程。在编写C++类的过程中,我们都希望是我们的成员函数集合最小化,但是常常很难做到这一点。本文就来详细的讨论一下这个问题!在游戏开发中有一个单元类: class Unit{public:原创 2008-02-05 12:51:00 · 2302 阅读 · 4 评论