新书快评:脚本驱动的“故事”

来源:互联网 发布:大连知行中学是重点吗 编辑:程序博客网 时间:2024/05/01 14:57
2006年11月27日 12:09:00

读罢陆其明的新作《脚本驱动的应用软件:开发方法与实践》一书,感觉非常不错!在我看来,此书至少有三个特点颇值得称道。

一是写法值得称道。作者陆其明不愧是四本原创书的作者了,他很了解读者爱看什么样的书,此书完全是在讲一线的开发"故事",娓娓道来。此书自始至终贯穿的三个案例不是相互孤立的,可以说这是同一个软件的1.0、2.0和3.0版本,使读者更真实地体会设计改进的脉络--这三个案例分别是看图软件、可定制的看图软件、脚本驱动的看图软件,其功能如下:

这个看图软件取名为ImageViewer,是一个标准的Windows风格的应用程序。ImageViewer主界面中央的一块区域用于显示当前图像的内容,其上方的一排按钮用来响应用户的操作指令。这些按钮的功能定义如下:

• 按钮Open:用于打开本地硬盘上的一个图像文件。如果操作成功,则图像内容随即显示在下方的窗口中。
• 按钮Reload:用于重新装载源文件。如果当前打开的图像已经被作过一些处理(比如反色、灰度化等),则经过Reload之后这些处理效果都将被丢弃。
• 按钮Clean:用于将图像内容完全擦除。
• 按钮Save As:用于将当前显示的图像内容另存为一个用户指定的BMP文件。
• 按钮Invert:用于将当前显示的图像内容反色。
• 按钮Greyscale:用于将当前图像内容灰度化,即转换成黑白图像。
• 按钮Logo:用于在当前图像的左上角叠加一个小的Logo图像(像电视节目左上角叠加的电视台台标一样)。
• 按钮System Time:用于在当前图像的右上角叠加当前的系统时间,格式为yyyy-mm-dd(HH:MM:SS)。
• 按钮About:用于弹出一个消息框,说明本软件的版权、版本等信息。

二是以实际的应用开发为背景,将多种技术融合得非常自然。XML、JavaScript、COM、ActiveScripting等,均出现在架构中适合它们的位置。


三是不仅代码精良,OOP得漂亮,在OOD设计方面也有颇多亮点。仅举一例。我所著的《软件架构设计》(2007年2月面世)的"第19章 突破OOP思维:继承在OOD中的应用"中介绍了混入类(Mix In Class)的相关设计思想:

本章站在OOD的角度,将继承看成实现OOD的强大手段,通过具体例子,说明针对接口编程(Program To An Interface)、混入类(Mix In Class)、基于角色的设计(Role-based Design)这三个与继承紧密相关的著名OOD技巧。

混入类被定义为"一种被设计为通过继承与其他类结合的类",它给其他类提供可选择的接口或功能。

从实现上讲,混入类要求多继承;混入类通常是抽象类,不能实例化。

混入类的作用在于:它不仅可以提高功能的重用性,减小代码冗余;而且还可以使相关的"行为"集中在一个类中,而不是分布到多个类中,避免了所谓的"代码分散"和"代码交织"问题,提高了可维护性。

而《脚本驱动的应用软件:开发方法与实践》一书的作者显然深谙OOD设计,他的案例就详细给出了Mix in的一个例子,并且代码类图一应俱全。

例如,其中的CSkinObject类主要负责皮肤图片文件的读取(生成一个GDI位图以便显示到窗口区域中),CSkinButton是一个支持皮肤的按钮类,CSkinDialog是一个支持皮肤的对话框类。并且CSkinButton类和CSkinDialog类都从CSkinObject类继承而来。

读罢此书,遥望窗外,已是灯火阑珊。《脚本驱动的应用软件:开发方法与实践》详细讲述的一线开发"故事",恍惚间已和美丽夜色融为一体,品之弥笃。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1416546


原创粉丝点击