以前做PHP的时候,使用一些流行的框架(CI、Yii、Laravel),这些框架基于MVC,也就是说这些框架分为了Model、View、Controller三层(这不是废话吗?)
但是转到Java之后,发现MVC中的V几乎不怎么接触了,PHP的Model 可以理解为 Java的DAO层吧,但是让我犯迷糊的是:Java项目中出现了Service层和Controller层,大致了解调用过程:Controller调用Service层,然后Service层调用DAO层,但是对于Service的功能却有点懵,感觉Service层和Controller层好难彻底分清除(懂我的意思吗)。
如果是在PHP中,Service层和controller层都是写在Controller中,所以在Java中,Service和Controller有什么好的方法来区分开吗?
希望大家不吝赐教!!!!
m是模型v是视图c是控制器
java开发后后代码一般是:bean实体类、dao数据访问层、service服务层、servlet(controller)控制层
dao层不处理业务交给service,页面发送请求给controller,controller再根据请求名调用servlet或直接调用service
可以这样说吧service是实现公交车,controller就是调度中心
没写过,但我猜测,多个controller可以调用同一个service,是这样吧,就是这样。不用太纠结这些层,软件复杂了层就多,简单了就少。
另外“Model 可以理解为 Java的DAO层吧”,我觉得好像不是一回事吧,MVC中的Model一应该是提供给View来显示的数据吧。DAO应该是用来持久化和查询数据的吧,通常情况下,可能DAO层查询出来的的实体可以直接作为MVC里的Model来使用,但是有时候也不是直接就能用,如果我是架构师,我反正不会把MVC中的Model和DAO处理的实体等同看待
service主要实现业务逻辑的,dao与数据库打交道,controller主要与前端配合,接收请求并返回数据,
service可以被多个controller调用
controller一般不写过多逻辑
(个人观点)
service主要是实现业务逻辑的,调用Dao中的方法进行处理,说的通俗点主要是调用Dao层方法处理业务,而controller用于获取用户提交过来的参数,根据参数进行处理,调用service;
分开的好处是在controller中一个请求可能存在多种不同的service处理,而且service也可以被其他的controller重复使用
MVC和以前的那种三层架构是不一样的,具体我也说不上来,应该是业务逻辑代码放在哪里的问题吧,三层架构分的不是很明确,而mvc是彻底分离了
现在java分层越来越多,已经不再局限于mvc了,但是万变不离其中,你可以吧service跟controller都看做mvc中的c层,controller主要做一些服务的编排,把前端的请求调度到各个service中去处理业务逻辑。service再调dao做持久化操作。