MVC业务分层

业务分层
标签(空格分隔): 面试

分层
简单的mvc结构如下:

view层:视图层。
Control层:业务层,集合了各种action。调用model层的方法,实现对数据的访问。
model层:模型层,一般和数据打交道。例如:一个表对应一个model类。
基于control层和model层并没有很好的实现模块化,进行如下改进:

view层:显示层。
control层:业务调度,不直接联系dao层,需要操作数据的时候,通过service层访问DAO层来实现。
service层:业务逻辑处理,调用DAO操作数据,针对服务进行设计。 service层将controller的逻辑分类,保证了controller的逻辑更加清晰。
dao层:数据访问借口。细化了数据模型,更加原子化。
具体
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

Service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

Controller层:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

View层 :此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,

这样做的好处是:

  1. control层得以精简,因其中的一些逻辑,被重构成一个个的服务。
  2. 只负责和数据打交道的DAO层,相比之前的model层,也得以精简(DAO层尽量只做最原子的数据操作,不同数据操作之间的联系,这边不考虑,那是service层的事情)。
  3. service层可以实现很大程度上的代码复用,程序的功能封装更清晰了。
  4. 由于service层更加清晰的定义了应用程序的边界,那么对于各个service函数(对应某个服务/应用),要做到自动化测试就方便多了

问:在controller和service里都写那些代码?

答:Controller,从字面上理解是控制器,所以它是负责业务调度的,所以在这一层应写一些业务的调度代码,而具体的业务处理应放在service中去写,而且service不单纯是对于dao的增删改查的调用,service是业务层,所以应该更切近于具体业务功能要求,所以在这一层,一个方法所体现的是一个可以对外提供的功能,比如购物商城中的生成订单方法,这里面就不简单是增加个订单记录那么简单,我们需要查询库存,核对商品等一系列实际业务逻辑的处理;

问:controller 和service 职责如何划分?

答:一般来说有两种,一种是薄Controller,一种是厚Controller。前者Controller只负责搜集参数、调用服务、转发或重定向结果集,其他业务逻辑都放在Service层。后者则相反,业务逻辑都在Controller中进行处理,服务层只负责一些增删改查的方法。两者各有好处,具体情况需要看业务逻辑,如果业务复杂,甚至可以增加多个业务层

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值