一直以为 MVC 和三层架构是同一个东西,直到今天才明确的知道:MVC 是 MVC,三层架构是三层架构, 它们之间毫无关系。
三层架构
三层架构是系统级别的,基于业务,如下图:
整个过程:展示层发送请求到 Controller,Controller 收到请求后交给相应的 Service 去查询对应的数据,并将结果返回给展示层,最后展示层将数据显示在页面上。
三层架构是为了解决整个应用程序中各个业务过程中不同阶段的代码封装问题,包括:展示层、业务逻辑层、持久层。其中, 低层不能调用上层;同层之间可以互相调用(持久层、Controller 除外)。
特点:
- 低耦合
- 可维护
- 有了利于软件工程化管理
缺点:
- 内部结构复杂,不容易理解,文件数量大。
MVC
MVC 用于创建在域对象和 UI 表示层对象之间的区分,基于展示层的设计模式。
M:Model(模型层),主要负责业务逻辑以及数据库的交换
V:View(视图),用于显示数据和提交数据
C:Controller(控制器),用于捕获请求并控制请求转发
各部分之间的通信都是双向的。View 与 Model 不发生联系,都通过 Presenter 传递。View 非常薄,不部署任何业务逻辑。
各个层的作用:
- 控制器的作用是调用模型,并调用视图,将模型产生的数据传递给视图。并让相关视图去显示。
- 模型的作用是获取数据并处理数据。
- 视图的作用是将取得的数据进行组织、美化等,并最终向用户终端输出。
好处:分离了关注点。后台代码被移到单独的类文件,可以最大限度的重复利用代码。
缺点:
- 不适合小型应用
- 增加系统结构和实现的复杂性
联系与区别
- 联系
- V 相当于展示层;C 相当于展示层和业务逻辑层之间的 Controller;M 相当于业务逻辑层和持久层。
- 都是为了解耦
- 区别
- 三层架构试试软件架构,通过接口实现
- MVC 是一个设计模式——解决方案
- 三层模式试试体系结构模式,MVC 是设计模式
MVC 和 三层架构相同的设计理念就是:把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率。三层架构和 MVC 设计模式侧重点不一样,三层是一种笼统的架构思想,没有限制具体的设计;而 MVC 就比较具体的说明它的设计方法。