Author:水如烟
总目录:行政区划数据方案设计
上一篇,行政区划程序的设计(五)
在行政区划程序的设计(一)中,我曾说过,“一个方案,尽量做到组织严谨,脉络清晰,分工明确”,“一般的,我是按应用范围和服务对象两者的结合来组织”。可真要做到,并不容易。到目前为止,我也仅仅在IDE上建立了五个空项目,一行代码都未曾写。确定使用UserControlQueryBase控件,也只是分析中确定下来的初步想法。
由于工作关系,我也只能是断断续续来想,来组织,来写文。
现在,我就盯着这五个空项目,想它们间的关系。项目在哪个范围内起作用,为谁服务,提供什么服务。
五个项目的确定,是初期的想法。在后面的实现过程中,是否需要调整?在我的经验中,初期想法很宝贵,不到最后,不要轻易改变初期的思路。项目可以分解,但某个项目的取消或合并,就会全盘否定当初的想法。
重新审视一下这五个项目:
LzmTW,可以忽略。
RegionalCodeLibary,负责与数据库直接打交道,不依赖任何其它项目(可能除LzmTW外,这点其它项目也是)。它对外提供版本数据的更新;输出信息视图,就一个DataTable两个功能。
RegionalCodeCommon,负责为WinForm或WebForm提供基础信息,也不依赖任何其它项目。它没有引用RegionalCodeLibary,因此,它不能直接取得RegionalCodeLibary提供的服务。在分析RegionalCodeApplication项目的编码要点时,说过有两个函数FUNCTION GetAllInformationsTable(ByVal QueryDataDate As String) As AllInformationsTable、FUNCTION IsSameDataDate(ByVal QueryDataDate As DateTime, CurrentDataDate As String) As Boolean可以放在这个项目上。但这两个函数的实现,肯定离不开RegionalCodeLibary的支持。现在问题来了,还有没有必要放在这里?放在这里有何用处?现在呢,我还是决定放在这里,不过是以接口定义的形式。它的作用是,当要移植到WebForm,编码者看到这个定义时,会思考这两个函数的价值,从而也体会出上文分析的思路。这可以说是思维的存档方式。况且,接口是可以在引用它的项目中直接使用的。
RegionalCodeCenter,负责向RegionalCodeLibary请求服务,对RegionalCodeApplication提供服务。它依赖于RegionalCodeLibary,同时,也依赖于RegionalCodeCommon,它在实现RegionalCodeAppliction所需的功能时要使用RegionalCodeCommon的基础信息,也可能实现RegionalCodeCommon提供的一些接口。
RegionalCodeApplication,负责为用户提供查询服务。这里,还应补充上数据更新服务。它依赖于RegionalCodeCenter和RegionalCodeCommon两个项目。
关系的分析会体现在整个方案的编码过程,时不时的停顿一下,回头看一下,把握根本,明晰思维,很有必要。就算一行代码都没写,象现在。
由于脑袋还是在不停的“想”,我先安静一下,做不大头疼的项目,就是RegionalCodeLibary。
下一篇,RegionalCodeLibary项目的编写,行政区划程序的设计(七)