项目结构的命名规范与理解 Model,Util,Controller,Service和Dao

Java项目中Dao,Service,Controller,Util,Model 是什么意思,为什么划分?

什么样才是一个好的结构

好的结构应该保持单一职责。

好的结构应该是通用的。

好的结构应该是有明确定义的。

每一个分类代表什么含义

1.Model

Model是模型,一般而言,会有人分的更细,VO,DTO等等。我并不推荐分的更细,这个Model常常和持久化的数据一一对应,如Mysql和MongoDB。

Model承载的作用就是数据的抽象,描述了一个数据的定义,Model的实例就是一组组的数据。整个系统都可以看成是数据的 流动,既然要流动,就一定是有流动的载体。

文章是一个Model,一般叫Article,包括Title,Summary,Author,Content等等。评论也是一个Model,一般叫Comment,包括Content,userID等等。对于初学者而言,第一个要学会,就是建模,把业务逻辑映射成数据模型。
2.Util

Util是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理。

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

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

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

Dao一般而言,都是用来和底层数据库通信,负责对数据库的增删改查。
是的。他就是一个Dao。他从来不关心这些货物要去哪里,他只关心。入库,出库,查询和更换。

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

Dao最好都是要独立出来。

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

我并不推荐在Service里调用多个Dao,也推荐在Service里调用多个Service,大多数情况下我都不推荐这么干。
5.Controller
控制中心,所有的指令,调度都从这里发出去。

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

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

Guess you like

Origin blog.csdn.net/dasgs5a64/article/details/120952449