Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
简化Spring--Model层

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

因为Spring的Example离我们的实际应用都很远,Example里的Model层便不具有代表性,因此就埋下了祸根, Domain-Driven逢初一、十五都会被拿出来讨论一遍。

其实我觉得,无论什么模式,都不过是一种人为的划分,抽象和封装。只要在团队里理解一致,感觉良好就行了。在我的Model层里,只有VO和Manager两位,VO作为纯数据载体,而Manager类放置商业方法,用getHibernateTemplate()直接访问数据库,在一些主要的Manager类里会包含一些小的同类。

1.VO:

考虑到VO如果带商业方法的话,因为它代表的是单个个体,无法承载针对个体集合的方法比如findOrderList()方法,这些方法始终还是要放在Manager类来做,另外基于传到View层的代价,代码自动重新生成的代价,不如把商业方法统一放在Manager类里。

2.Manager:

1.不使用纯DAO。以往的DAO是为了透明不同数据库间的差异,而现在Hibernate已经做的很好了。目前DAO的更大作用,是为了将来可以切换到别的ORM方案比如iBatis,但一个Pragmaic的程序员显然不会无聊到为了这个理由去做一个纯DAO层,直接使用getHibernateTemplate()已经足够。

2.也不使用纯的薄Service层。在JetpetStore里有一个很薄的Service层,Fascade了一堆DAO类,把这些DAO类的所有方法都僵硬的重复了一遍。而我认为Fascade的意义在二:
一是Controller调用Manager甲的时候,总会伴随着调用Manager乙的某些方法。使用Fascade可以避免Controller零散的调用一堆Manager类。
二是一个商业过程里可能需要同时调用甲乙丙丁的方法。

因此,我会在一些主要的Manager类里灵活的使用Fascade,在需要调用其他Manager的方法时就包含它,或者在其他Manager的某些方法总是被伴随调用时,就有选择的代理它的这个方法。

始终都没有在Manager类之上再建单独的一层Service类,我讨厌类膨胀,另外Fascade只是选择性的,Controler如果要同时面对Manager类和Service类有点脚深脚浅,那还不如都在Manager层里完成。

因此,我的模式里,VO作为纯数据载体,Manager类放商业方法。有人说这样太简单了,但一个应用,要划成一个JSP,一个Controller,一个Manager,一个VO,对我来说已经足够复杂,再要往上架墙叠屋,恕不奉陪,起码在我的应用范围里不需要。




相关文章

相关软件