问题描述
最近在做一个关于相册网站的项目,由于本人经验严重欠缺,需要各位大侠帮助一下。项目是基于Springmvc+ibatis+velocity的。项目大概划分为Dao层、Servic层、Domain层、Controller层等几个大层。比如Service层里有PhotoDao,AlbumDao等。Service层里面有PhotoService、AlbumService等。把各个Dao注入到相应Service层里。各个Controller里注入相应Service。比如说我要上传一张图片,将图片保存到文件系统,然后相应路径保存到数据库。这个时候我写一个AddPhotoController。它调用PhotoService里的savePhotoToDisk()方法和insertPhoto()方法。其它的删除和修改对应相应的Controller。问题是我们的老师说这样controller会很多,很乱。他的建议是写一个总的controller。然后根据参数调用Bussiness层里的方法进行转发处理。我需要增加一个Bussiness层吗?它的好处和坏处又是什么?请各位指教。谢谢。
解决方案
解决方案二:
1.你们老师纯属胡扯,他水平差远了。controller和strutsaction都一样,本来已经是通过转发才能处理请求的了,你这再来转发有什么必要吗?是不是还要多来几层转发呢,完全没必要。2.Service层就是Bussiness层了,也就是业务层。不用再来一层。按照你们老师的逻辑,再分100层都不够用。3.如果再加Bussiness层,是不是会有很多Bussiness文件呢,这和有很多controller不是一样的吗?不能起到任何作用。4.而且你从几种controller的使用方式上就能看出,controller就是处理各中页面请求的。比如Controller处理简单页面请求,无参数或者简单参数。SimpleFormController处理简单的表单提交页面的请求。你们老师就知道狗屁的转发,页面控制他考虑过吗?写spring的人比你们老师起码要强多了吧
解决方案三:
该回复于2011-02-18 10:47:05被版主删除
解决方案四:
Bussiness就是service业务处理层
解决方案五:
PhotoController这是ACRION还是什么?action本身就是一个Control层级的东西。你可以写一个dipatchaction然后写4个方法addupdatedeleteview分别实现相应功能不需要每个功能区写一个action的
解决方案六:
为了软件的后期的更好维护,最后要写一个公共的接口,这样以后以后逻辑中只简单的调用接口的方法名就好,即使实现接口的逻辑改变,只需修改那一小部分就可以了
解决方案七:
其实我倒是觉得,你们老师给的建议还是不错的。这不是1楼所有的那么没有道理,web层上增加一个业务层并没有多大关系,主要是封装的合理,易懂就是好的。因为原来自己的思路是一个操作一个controller,这样做显然会有很多的controller,可以通过增加biss层,用来对web层做业务的包装,例如把某个业务的增删改查等的方法放在一个contrller,通过不同的请求参数(type)来选择具体方法。这样的层次感是很优秀的。然而楼上一定要说biss就是ser层的,没有人这样说过,业务可以细分,看你脑袋了。