`

《易道客》源码剖析之一:模块的目录结构分析

阅读更多

以客户管理为例,说明一个模块的目录结构。目录结构图片如下:

目录结构

一、目录结构由四层组成,分别是:区域、模块,代码分区、代码类别。

 

二、kh代表是的客户区域,该区域下面放的都是客户管理相关的模块。

 

三、模块说明。

1main代表一个模块,在此是代表客户中的主模块。在图中可看到,客户区域下面还有两个模块:notpadoutBox,分别代表客户记事和邮箱帐户,此处我们以main模块作详细讲解。

2)此处的模块,指的是物理模块,即对一个或一组bo对象相关操作功能的代码实现。分模块的原则是:一个bo对象或一组紧密关联的bo对象定义成一个模块。例如:此处的客户、联系人、客户分类、客户来源等一系列和客户紧密相关的一组对象,定义在的一模块内。

3)逻辑模块指的是一块逻辑功能的调用入口。如:我的客户管理、联系人管理等,逻辑模块可以被菜单引用。可将一个action定义成一个逻辑模块,也可定义成多个,但最好一一对应,这样整个程序结构显的比较清晰。一个物理模块中,可以定义多个逻辑模块。具体逻辑模块的定义参见“模块的定义”中的说明。

 

四、insidejk分别代表代码分区,表示一个模块的内部和对外接口。

 

五、inside内部分区中的代码分类:

1actionstruts2框架中的action定义。一个action可以代表一个逻辑模块,一个定义成多个逻辑模块,详参见“模块的定义”中的讲解。

2bean:细粒度的业务逻辑处理,被service调用,用来实现业务代码重用。

3bobo对象定义,和数据库一一对应

4other:其他,如:DWR对象、常量定义、对其他模块的接口(其他模块/jk/inf)的实现(例如:在某个用户被删除时,我们希望该用户的所有客户,全部转入部门库,就可以去实TriggerUserDeleteInf接口,将客户划转的逻辑写在该实现中,并将该实现加入到接口中的常量列表中,就可以保证,在用户被删除之前,该实现被调用。这样一方面实现了不同模块代码之间的解耦合,也避免因为数据库表外键而导至用户信息删除报错。)

5service:业务逻辑处理,有时可能调用bean

 

六、jk对外接口分区中的代码分类:  

1dto:数据传递对象,用于和其他模块交互时传递数据

2inf:对外接口,如TriggerClientDeleteInf,该接品中定义的一个List列表常量,中间存放着该口的所有实现类,还定义了一个beforeClientDelete方法,所有实现类的beforeClientDelete方法会在该客户在删除之前被调用。如果其他模块对客户信息有引用,并且希望在客户信息删除时进行一些处理操作,就可以实现该接口,并将实现类放入接口的List常量中。可以和上面other中的说明结合着理解。此处接口定义是给别的模块使用,上面other是使用别的模块接口。

3module:模块的定义,即将该main文件内代码包装成一个或多个模块,可以被各处的菜单调用。

 

 返回《易道客》主页

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics