posts - 82, comments - 269, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

对Appfuse(struts)的一点反悟

Posted on 2006-11-09 20:31 itspy 阅读(2030) 评论(0)  编辑  收藏 所属分类: JAVA技术
最近因为可能的工作需要,又开始学习JAVA相关技术了。因为没有明确的技术方向,只好还是从高层学习起,学习各种框架设计思想,学习模式。
 
顺手从手边拿起一本Struts书《Struts程序员查询辞典》,看起里面的MVC讲解,说真的这本书讲的还真不错,以前看了好多书都不太明白的东西,这一次看什么就明白什么。想想也可能是因为现在有了一定的实践经验,要是我以前拿到这本书,可能也是看不懂。反正这个是无从考证了。
 
说到这使我想起以前的一个笑话,一个傻子买了3个大饼,吃了前两个都没吃饱,到第三个才吃饱。于是叹道:早知道,我就只买第三个了,前两个饼没用。
 
我看多半,是因为看的多了,加上之前在公司的实践学习的原因,才能使我这次看这个MVC一看就能明白书上在说什么。
 
记得以前刚开始看Struts时,还以为struts的FormBean是Model层的,还是一位高手告诉我不对,当时我还不太信(不相信权威^--^),当然不久我就知道是我搞错了。
 
MVC,其实Struts根本就没有实现M层。它都是直接使用现有的其它技术。比如M层,就可以使用EJB,或者是DAO模式来实现。从书中,我明白了,原来Model层也分了好几层,接口层,事务逻辑层,数据访问层。以前Appfuse中为什么把一个DAO分成好几块,以前一直不太明白,这几块分别是干嘛的。
 
现在有了一些重新的感悟写下来,不知道对不对,要有不对的请各位看客指出。
用过Appfuse的应该知道,在src/dao目录下面有四层,org.appfuse,org.appfuse.dao,org.appfuse.hibernate,org.appfuse.model。其中第一层org.appfuse中放的东西,用处不大,里面放置了些常量定义。另外三层分别定义了,dao的接口,dao的hibernate的实现类,和数据传递对象(DTO)。上面这些应该都没有业务逻辑的处理才对,以前早期开发时由于不太明白Appfuse的分层原则,也不理解Struts分层的Model层是如何划分的,在这些层中放入了一些业务逻辑。没有找到对应的单独的事务逻辑层,这一层应该放在了dao的hibernate的实现类里面了。
 
在Appfuse中,好像添加了一个新的层,应该算做是业务逻辑层,也就是在src/service里面。他里面定义了接口,及接口的实现,还有这一层通用的功能块。通过我的理解,这一层应该主要是体现业务逻辑。也就是提供给Struts层的Action来进行调用。
 
也就是MVC在Appfuse的Struts版本里面,M实现的是对数据库的操作及一些领域模型的实现;V就视图,这个在Appfuse里面没有什么含糊的;另外C只是相当于一个路由的功能,把不同的请求交给不同的业务逻辑处理,把结果交给不同的VIEW去显示。然后Appfuse在MC之间添加了一个业务逻辑层(src/service)。
 
最近的学习体会,不知对不对,希望有高手指出不对的地方。

只有注册用户登录后才能发表评论。


网站导航: