一.概述
- M:Model,业务模型,处理业务
- V:View,视图,界面展示
- C:Controller,控制器,处理请求,调用模型和视图
- M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
- V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。
- C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
最典型的MVC就是JSP + servlet + javabean的模式,如下:
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。MVC的好处在于职责单一,互不影响,有利于分工协作,有利于组件重用~
二.三层架构
三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。
- 数据访问层:对数据库进行的CRUD的基本操作
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层中的基本功能,形成复杂的业务逻辑功能
- 表现层:接收请求,封装数据,调用业务逻辑层,响应数据
在Idea项目中,一般约定俗成的起名:
- 表现层:Controller(对应3层架构的Controller+View~)
- 业务逻辑层:Service
- 数据访问层:mapper或者dao
三层架构的存在提高了代码的复用性~
三.Dao层
如果使用到了Mybatis框架,也可以取名为mapper层。DAO(Data Access Object) 模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。
四.Service层
业务处理层,它处理逻辑上的业务,而不去考虑具体的实现。要提供不同的数据库的服务时,我们只需要面对接口用不同的类实现即可,而不用重复地定义类。
五.Utils层
工具类层,通用的、与业务无关的,可以独立出来,可供其他项目使用~