项目中Dao,Service,Controller

本文探讨了Java项目中Dao、Service、Controller的角色。Dao关注数据库交互,Service提供服务并可能调用Util,Controller作为调度中心。强调了各层职责分离和良好架构的重要性,同时对比了WEB、Android、iOS平台的架构差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

像这种打包,不管是充气娃娃还是别的什么东西,都打包。你可以理解为图中的黑衣人就是一个Util。

某种程度上也会跟Service有点接近。但是Service一般而言,都是包含有业务逻辑的,很少能做单元测试。

Util一般来说,就是一个明确的输入和一个明确的输出结果。单元测试中,多数也是来测试Util。

积累好自己的Util是一件很重要的事儿。

3 Service

Service比Util的概念大很多,它的重点是在于提供一个服务。这个服务可能包括一系列的数据处理,也有可能会调用多个Util,或者是调用别的服务。总归一句话,就是,有什么事情,你来找我。

就像这个图上的妹妹一样,她就是一个Service,她能提供什么样的服务?这个是必须定义好的。如果是洗脚,她要帮你脱鞋,要端盆子烫你的脚。这里面,你的脚就是一个Model,盆子里的水相当于Util,不管里面放进去啥都能烫一烫。

帮你脱鞋可以是一个Service,也可以是一个私有函数,也可以是一个Util。看你的是让这个小妹妹帮你脱,还是别的小妹妹脱,还是自动脱鞋机。

如果是你自动脱。。。说明你在Model里面加上了功能,你的脚就不是一个纯粹的数据模型了,而是一个包含业务功能在里面的充血模型。

这样不好。老老实实让小妹妹帮你脱鞋不好么。

4.Dao

Dao一般而言,都是用来和底层数据库通信,负责对数据库的增删改查。

是的。他就是一个Dao。他从来不关心这些货物要去哪里,他只关心。入库,出库,查询和更换。

所谓的CRUD就是创建,读取,更新,删除。

Dao最好都是要独立出来。

到现在为止,最佳实践就是一个Service只对应一个Dao。Service会做一些额外的检查,如货物是否损坏,入库单是否完整,等等等等。

我并不推荐在Service里调用多个Dao,也推荐在Service里调用多个Service,大多数情况下我都不推荐这么干。

具体原因以后再说,这也是一个开放性的话题 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源

现在我们分清楚了Model,Util,Service和Dao,可是谁来做总的调度呢?

5.Controller

控制中心,所有的指令,调度都从这里发出去。

哪一个Service做什么事儿,谁的数据提供给谁,一般而言,都是在Controller里实现的。

Controller也是最常见的容易产生脏代码地方,通常他们会把一些不该放到Controller里东西也放进来。

大概的感觉就 Java开源项目【ali1024.coding.net/public/P7/Java/git】 是这样的。

干嘛的都有。想想如果打小针,抽血,查尿也混杂到门诊大厅的感觉?

可是大部分人写代码就是这样的。

四、是否适用于WEB,Android和IOS?

Java后台是有很清楚的结构的,毕竟在JSP里写Sql语句的蛮荒时代已经过去了。

Android本身就是一个良好的框架体系,基本上问题也不大,最多就是MVP和MVC的差别之类。

IOS虽然没有官方提供这种框架体系,特别是很多人喜欢直接在Dict里用key取数据,这本身就破坏了代码的层次性。

但是毕竟是有李明杰提供的Json解析Util,只是各家要求的力度而已。

最难以理解的是WEB,也就是JS。

我不是在黑JS,我是在黑JS程序员。分层结构一直都不是JS社区里最注重的,在JQuery时代更是如此,不管是Html还是JS还是CSS混在一起是正常的。

那个时候叫插件,现在改名了,叫组件。

你很难在JQuery里找到一套清晰的分层结构,就跟十几年前所有的人都在Jsp里写逻辑语句的道理差不多。

直到google的大神偶尔溜达过来一看,咦?你们怎么还在刀耕火种?我来给你们加点现代感的东西吧。

于是Angular横空出世,一次性地构建了一个清晰的框架结构。每次看到Angular的时候都忍不住 惊叹,原来前端代码也可以这样!

而原来的感觉就是这样。。。

现在基本上可以分成两大阵营,一个是React和Vue,一个是Angular。

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

image
,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

[外链图片转存中…(img-xCU04YlZ-1650019792309)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值