OOP程序设计实践
2006-02-04 13:51:34 来源:WEB开发网·简介(开发中)
前言
phoenix,浴火重生的凤凰。和她的名字一样,这个版本的热键助手是一个全新的热键助手。虽然她“长得”和以前的版本差不多不过她已经实现了程序的全部重写。
应当说phoenix版本是“热键助手”的降级版。在以前开发“热键助手”的时候,按照自己的喜好加了很多功能。然而在实现了这些功能以后,却发现真正使用这些功能的人其实并不多。这次开发的出发点是实现基本的功能,在用户需要时再根据具体情况添加。
OOP
其实这次重写“热键助手”主要是对OOP的实践。在以前写程序的时候总是喜欢把不同的功能放到不同的单元中,把不同的功能放到不同的函数中……。当时感觉这样写程序就已经很帅了,但始终感觉没有摸到OOP的门。然而就在最近开始有点OOP的感觉了,于是决定将“热键助手”进行一次重写。
重写的过程中问题还是不少的。
在设计的过程中颗粒细度始终很难把握。因为是初次使用OOP的思想来做程序,在划分模块的时候经常“狠不下心”,老是希望把颗粒划分得比较细,舍不得将颗粒画粗点。不过根据XP的说法,不应当在程序设计的初期把程序设计得太“完美”,因为你的能力会在设计的过程中提高的嘛。一些东西以后做也许会做得更好,而且现在计划的很多东西在以后可能会变得毫无用处,为什么要浪费这么多的时间来做一些无意义的事呢?而且只要前期的设计不要做的实在太烂,在后期还可以比较方便的使用重构来改善程序结构以适应需求的变化。
程序具体结构(还没完成)
下图就是程序的类图,因为还没真正完成所以在最终实现的时候应当还会做写修改。
下面还是对程序的结构进行一些讲解吧。(其实类图提供的信息已经蛮详细了)
TvxShortCut类对热键(TvxShortCut)进行统一管理管理。在TvxShortCut有一个TvxSettingMgr的引用,通过她来进行对设置文件的操作。TvxShortCut应当是一个抽象类(目前还不是),因为她没有和界面打交道的代码,她的界面相关部分将在子类中实现。
TvxSettingMgr用于实现配置部分的功能。其实可以将其设计成一个接口。其具体实现可以由TvxxmlSettingMgr等实体类来实现。不过目前还没有采用其他配置方式的想法,所以先这样做吧,等到有必要的时候再考虑重构。
TvxShortCut用于实现热键的注册和卸载等功能。TvxShortCut应用TvxScript执行热键操作。
TvxScript对脚本进行分析,并调用TActionFactory来构造一个TvxAction接口的类来执行具体的脚本。(我觉得TvxScript这个类好像有点小问题,但具体怎么改还想不到,所以先这样用吧)
TvxAction执行热键的具体操作。这是一个抽象类,她的具体实现在她的子类里实现。
TvxMenuAction类,实现了IvxMenuInterface接口的Action类,可以将其添加到Menu上。这也是一个抽象类。
TvxOpenFile类,TvxMenuAction的子类,用于具体实现打开文件的操作。
IvxMenuInterface接口,添加到Menu的接口。
TvxSubMenu类,有子菜单的菜单项目(分隔符也算到这里面,反正是和Action无管的菜单项)。
TvxMenuMgr,具体将实现了IvxMenuInterface类的接口添加到菜单上。
差不多就这样了。因为我也是OOP的菜鸟,设计方面还是很菜,而且自我感觉上面的类图还有不少问题,如果大家有什么好的建议欢迎指出来。
类图(点击察看大图)
备注
在设计的时候我也一直在象,我是不是将问题复杂化了。不过OOP的第一步始终要走出去的,所以就算是再硬的核桃也要将其砸扁。
顺便祈祷这个程序可千万别夭折了,就算是再烂也还是写完先。(在接下来的一段时间里工作会很忙,不知道什么时候可以将程序写完)。
更多精彩
赞助商链接