Web学习笔记(2) Controller、Dao、Model、Service与Util

本文深入探讨了软件架构中的分层概念,包括Controller、DAO、Model、Service和Util等关键组件的角色与职责,解析了它们如何协同工作以构建复杂项目。

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

      看一个涉及后台数据库的项目时,我们往往会看到类似这样分层的结构。


名词解释:

Controller = 控制器

DAO = Data Access Object = 数据存取对象

Model = 模型

Service = 服务

Util = 工具

       通常来说,完成一个大项目会把其分解 成很多不同的模块(Module),然后根据用途和角色,对这些模块有一个通用的命名规则,这也就是上面这些英文单词的来历。

        所以,Ivony 提醒我们一定要记住,项目中是否包含这些模块或者单词,和你的项目结构是否完善一毛钱关系没有。但是当你的项目结构相对完善的时候,你会发现有这样一些角色的存在。


接下来一个个的来详细讨论一下这个东西是如何出现的:

(1)Model

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

       Model就应该是 一个纯数据的集合,就是被各种东西传来传去,被各种加工处理的 数据团

       而这一项目处理过程(本文中这一包)中,需要的数据,在这里被定义。

       其中生成getter与setter方法以后可能会总结。

(2)Util

       Util通常来说就是工具,即 公用的方法,常常用来描述和业务逻辑没有关系的数据处理。由于和业务逻辑不相关,所以是个即插即用的方法,学习中积累Util是个好事。

       其中Util 要有一个明确的输入和一个明确的输出结果。

       如果实在不理解,那么和私有方法对比:私有方法一般来说是只是在特地场景下使用的。

(3)DAO

        数据存取对象。简单来说就是把 SQL语句封装 在Dao层,和底层数据库通信,负责对数据库的增删改查。

        Dao从来不关心这些数据要去哪里,他只关心入库,出库,查询和更换。

        Dao的作用让我们和数据库的交道看起来比较像和一个对象打交道,当我们操作这个对象的时候,这个对象会自动的产生SQL语句来和数据库打交道,而我们只需要和DAO打交道就可以了。当然,从本质上来说,DAO并不需要和数据库有什么必然的联系,DAO只是数据存取对象的缩写,所以只要是 把数据持久化包装成一个对象的访问(读写),这种对象都可以被称之为DAO。

         ColoDao即代表Dao层的接口, factory 实现接口和实现类的连接、implement是实现这个接口的类,所需求的SQL代码就在implement中实现。

(4)Service

        提供业务功能。这一服务 “ 高度抽象和通用” ,只需要关注服务给出的接口 。

        主要做逻辑判断,通过调用己对应的Dao层来对数据库进行访问。

        所以服务的特征:抽象、独立、稳定。

(5)Controller

        控制中心,所有的指令,调度都从这里发出去。把以上定义的所有内容,无论是数据还是逻辑实现调用。

        比如:哪一个Service做什么事儿,谁的数据提供给谁。

public class ColoXServlet extends HttpServlet {

    //Service
	ColoService service = ServiceFactoryC.getService(); 

    //Model
	roinf all; 

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// 设置响应内容类型	
	}
}

 

 

参考来源:

https://www.zhihu.com/question/58410621/answer/157049250

https://www.zhihu.com/question/58410621/answer/156868800

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值