【程序编程相关:TheServerSide.net Te】
【推荐阅读:Delphi+MapX5中使用自定义字体】 【扩展信息:创建Photoshop式浮动窗口应用程序】 钱波 钱晓贤 高春玲
引言 软件系统的复杂性越来越大,而现有的类库也已经不能满足工程的需要,软件开发小组得到的建议是除了软件本身的特性突出,快速投放市场,成本低以外,还有性能与安全,并且软件能够做到改动容易,能及时交付,升级快速.软件构架的确会成为首要目标,但是架构可能很难说清楚是怎么回事,因为事实并不会如设计师所愿,设计展开以后,需求与构架解决方案将会越来越具体,设计师该怎样做呢?
设计模式的提出 模式在构造复杂系统得重要性已经在其它领域被认可,软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.灵活使用各种设计模式看来便成了一种设计上的技巧,已有的设计模式确实提供了设计的基础,但是设计模式并不是限于成规,关键在于怎样灵活的运用. 实例升级文件的制作 我们的文件是所需信息与几个文件的合并,后来在需要的基础上进行压缩,当然,升级文件下载后正好使个相反的过程,解压缩后分拆文件,然后把它们放置到合适的目录下去,实际上这个过程也可以看作是备份文件的产生与备份恢复.使用继承是添加功能的有效途径,我们可以在以前的类上派生一个类添加解压缩的功能,在完成以后就可以使用新增的功能了,这的确是一个方法,但是还有更为灵活的方法,更容易理解与分拆功能.我们可以利用模式装饰者,模式装饰者是一种对象结构型模式,就增加功能来说,使用继承是添加功能的一种有效途径,但是decorator 模式比生成子类更为灵活.
现在首先分拆功能,可能是这样的: 图一 功能拆分类图 从图一上看,tfileinfo 类实际上是我们的接口,是位于顶层的类,现在主要需要的是三个继承者,1合并文件类tfileinforeadin,2分拆文件的类,tfileinforeadout,3解压缩类tzipfile,在开始的时候并没有构造tfileinfo这样一个顶层类,.因为看起来并不需要他,我们可以用单独的tfileinforeadin 对象来构建合并的程序,完成后交给tzipfile的去压缩,在反过来的过程中用tzipfile对象来解压文件,用tfileinforeadout来分解文件到目录中去.功能已经比较单一了. 如图一所示,现在试着用一个抽象的基类来同时操纵三个可能毫不相关的类,它们的接口函数并不一定统一,强行定义统一的接口可能不太好理解,但是在顶层类还是这样定义了: procedure opbaselist(var ls:tstrings);virtual;abstract; //操纵信息字段... 下一页