对Appfuse(struts)的一点反悟

最近因为可能的工作需要,又开始学习JAVA相关技术了 。因为没有明确的技术方向,只好还是从高层学习起 ,学习各种框架设计思想,学习模式。
 
顺手从手边拿起一本Struts书《Struts程序员查询辞典 》,看起里面的MVC讲解,说真的这本书讲的还真不错 ,以前看了好多书都不太明白的东西,这一次看什么就明白什么 。想想也可能是因为现在有了一定的实践经验,要是我以前拿到这本书 ,可能也是看不懂。反正这个是无从考证了。
 
说到这使我想起以前的一个笑话,一个傻子买了3个大饼 ,吃了前两个都没吃饱,到第三个才吃饱。于是叹道:早知道 ,我就只买第三个了,前两个饼没用。
 
我看多半,是因为看的多了,加上之前在公司的实践学习的原因 ,才能使我这次看这个MVC一看就能明白书上在说什么。
 
记得以前刚开始看Struts时,还以为struts的FormB ean是Model层的,还是一位高手告诉我不对 ,当时我还不太信(不相信权威^--^),当然不久我就知道是我搞 错了。
 
MVC,其实Struts根本就没有实现M层。它都是直接使用现有 的其它技术。比如M层,就可以使用EJB,或者是DAO模式来实现 。从书中,我明白了,原来Model层也分了好几层,接口层 ,事务逻辑层,数据访问层。以前Appfuse中为什么把一个DA O分成好几块,以前一直不太明白,这几块分别是干嘛的。
 
现在有了一些重新的感悟写下来,不知道对不对,要有不对的请各位看 客指出。
用过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层的A ction来进行调用。
 
也就是MVC在Appfuse的Struts版本里面 ,M实现的是对数据库的操作及一些领域模型的实现;V就视图 ,这个在Appfuse里面没有什么含糊的;另外C只是相当于一个 路由的功能,把不同的请求交给不同的业务逻辑处理 ,把结果交给不同的VIEW去显示。然后Appfuse在MC之间 添加了一个业务逻辑层(src/service)。
 
最近的学习体会,不知对不对,希望有高手指出不对的地方。

你可能感兴趣的:(对Appfuse(struts)的一点反悟)