最近开始学习一个开源的管理系统, 拿到源码,看了几天都不知道所云。在本周一才意识到这套系统是B/S与C/S的混合体。
我一直从事Web Application的开发与研究,突然回到7、8年前研究的C/S程序,的确有点不适应。看到程序结构不知道从何下手。在网上搜索了一下这方面的资料也有不少,看了很多,还是有如坠云雾之感啊,直到在CSDN的论坛中看到了一个关于 java c/'s 结构讨论的帖子,才有所头绪。了解到java c/s程序一些基本的构成,帖子中提到了以下结构分层:
客户端:
View层
*XXXApp类,用来监测命令行启动参数,资源释放,提供入口main函数,包含对主要Frame的引用
*MainFrame, XXXFrame类,这些主窗口类
*XXXDlg, 弹出式窗口
*组件类,使用相关的XXXModel和XXXHandler,比如一个XXXTable, XXXPanel
Control层
*XXXHandler,就是实现了那些XXXListener的类,响应事件,调用相应的业务类
Model层
*XXXModel,顾名思义,model,包含XXXEntity数据
*XXXEntity,业务实体,这个东西类似DTO模式,也有叫BO的,反正简单说就是在层间传递数据的实体
后面的就比较灵活多变了
业务层
*XXXMgr或者XXXBO,业务类,就是业务了,比如银行转账,更改信用额度什么的。这些会调用EJB,JMS,Socket,JDBC,JCA,WebServices很多东西,为了避免业务层出现创建connection, statement这些鸟东西,下面再做一个DAO层,还有EJB层等等。
数据层
*DAO层,JMS层,EJB层等等,他们封装底层的操作,比如繁琐的lookup过程等,可以简化业务层。比如用DAO层实现XXXEntity的持久化,JMS层进行消息的处理等。这里的DAO,JMS,EJB等等,如何分层视情况而定。简单的有时候可能就只有一个DAO层调Hibernate,iBatis,JDBC什么的。
服务器端:
*部署EJB, JMS Destination,Datasource等等。EJB本身还可以分层,比如各种EJB模式
感觉比较有收获,正在研究中。。。