MVC模式三层架构 你搞清楚了么

2024-02-03 12:59

本文主要是介绍MVC模式三层架构 你搞清楚了么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有人说MVC模式是表现层的架构模式,有人说MVC模式是三层架构的替代方案。那么这两者之间,究竟是什么关系呢?

是什么

三层架构

从概念上来说,三层架构是软件工程领域中的一种架构模式,将业务应用划分为:表现层,业务逻辑层,数据访问层。

表现层:提供交互界面,负责数据的输入与输出。
业务逻辑层:封装业务逻辑,接收表现层的请求,调用数据访问层对数据进行操作,在数据交换中起到承上启下的作用。
数据访问层:负责与数据库进行交互,实现数据的增删查改等操作。

图1 三层架构

MVC模式

MVC模式同样也是软件工程领域中的一种架构模式,由三部分组成,分别是:模型(Model)视图(View)控制器(Controller)。
三层架构在概念上来说是比较清晰的,但是MVC模式相对来说就有些争论了,下面将借助三层架构来解释一下MVC模式,加深我们对MVC模式的理解。

MVC模式&三层架构的关系

MVC模式和三层架构之间的关系存在不同的观点,这是由于对MVC的组成模块的功能理解不同导致的。

有一种观点认为MVC模式是三层架构的替代方案,并对各个模块的功能划分如下:

模型(Model):可以理解为领域模型(domain model),封装了业务数据和业务逻辑,此时的model对应三层架构中的业务逻辑层和数据访问层。
视图(View):提供交互界面,负责数据的展示。
控制器(Controller):负责流程控制,接收输入的数据,委托给相应的model处理,根据结果选择合适的view返回。

其中视图和控制器合起来对应三层架构中的表现层。

图2 MVC模式&三层架构 对应关系1

另一种观点则认为MVC模式是一种基于表现层的架构模式,区别在于对模型的理解不同,模型的定义如下所示:

模型(Model):此时的model是数据的载体,类似程序中view model的概念,是view和controller之间通信的载体

在这种观点中,视图,模型,控制器共同组成了三层架构中的表现层,可以认为是对三层架构中的表现层做了进一步的拆分。

图3 MVC模式&三层架构 对应关系2

通过图2和图3,可以直观的发现,两种观点的差异主要在于对模型的理解不同。如果将MVC模式看做是表现层的架构,其实是对模型做了一个比较狭义的解释,笔者更倾向于认为模型是领域模型的观点。

MVC模式是三层架构的替代方案?

如果将模型认为是领域模型,是否可以将MVC模式看做三层架构的替代方案呢?其实不然,因为在笔者看来,这两者其实是从不同角度对软件工程进行了抽象。

MVC模式强调数据和视图分离,将数据展示和数据处理分开,通过控制器对两者进行组合。

三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开。

既然角度不同也就谈不上互相替代了,反而在日常的开发中可以经常看到两种共存的情况,比如我们设计模型层的时候往往也会拆分出业务逻辑层(service层)和数据访问层(DAO层)。

图4  MVC模式 流程处理

总结

MVC模式和三层架构分别从不同角度对软件工程进行了抽象,MVC强调数据和展示分离,三层架构强调不同维度数据处理的解耦。两者的目的是相同的,既通过对代码的合理组织,使程序的结构更加直观,降低代码耦合度,加强代码的可扩展性、可复用性、可维护性、灵活性。

公众号文章地址:https://mp.weixin.qq.com/s/Vv_xUYX-uhSo2i7JB4uCBA

这篇关于MVC模式三层架构 你搞清楚了么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674225

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者