MVC是什么

经常提到的MVC,大家都知道的是,M(Model)V(View)C(Controller)的缩写,翻译过来就是模型-视图-控制器,是用来开发web应用的框架,这样的设计目的是为了实现关注点分离,那么关注点分离又是什么?

关注点分离

关注点分离是一种开发时的指导,它主张了更改根据软件执行的工作类型将软件进行分离,摘抄微软体系结构原则,时这样写的
`
分离关注点是开发时的指导原则。 此原则主张应根据软件执行的工作类型将软件分离。 例如,假设应用程序中包含两个逻辑,其中一个逻辑标识要显示给用户的注意事项,另一个以特定方式设置这些注意事项的格式,使其更加显眼。 负责选择为哪些事项设置格式的行为应与负责设置格式的行为区分开,因为这两种行为只是碰巧彼此相关联的独立关注点。

从体系结构上来说,按此原则有逻辑地构建应用程序应将核心业务行为与基础结构及用户界面逻辑区分开。 理想情况下,业务规则和逻辑应单独位于一个项目中,且该项目不依赖于应用程序中的其他项目。 此区分操作可帮助确保该业务模型易于测试,且可在不与低级别实现详细信息紧密耦合的情况下逐步改进(如果基础结构问题取决于业务层中定义的抽象时,这也有帮助)。 在应用程序体系结构的使用层背后,关注点分离是核心设计思想。
`

回到MVC

以我通俗的理解,View(视图)是与用户交互的层面,也就是前端的部分,Model(模型)就是前端所需要的字段。Controller(控制器)就是与前端部分进行教育的webapi,当然后端与数据库交互的部分依然有Model,所以就是,数据库->后端处理->后端Model->Controller->前端Model->View。

视图和控制器都是依赖模型的,但是模型是独立的,既不依赖视图,也不会依赖控制器,这样也属于一种前后端分离的表现,因为都可以进行独立的测试了。

模型的责任

模型的表现,是应用程序和任何应由其执行的业务逻辑或者操作的状态。这里解释一下什么叫业务逻辑操作状态,业务逻辑就是接口、方法,叫法不一但是都一样,逻辑包含了计算,处理等动作;操作状态就是属性,属性会产生变化,可以推进业务;方法(业务逻辑)对属性(操作状态)新型操作,来完成特定的业务。但是在设计的时候,一般来讲都是将业务逻辑和操作状态分离的,确保代码的可维护性和可重用性。这里就涉及到充血模式和贫血模式的问题了,但是跟人认为,实际情况应该根据场景和架构模式以及业务需求进行不同的处理。

视图的责任

就是给用户展示的内容,用户通过视图来对业务进行交互、动作,达到对业务处理的目的。

控制器的责任

用户通过视图进行了操作,那么操作的业务逻辑与状态就通过模型传递给控制器,控制器再通过用户的动作对业务逻辑与操作状态进行处理并反馈给用户。


MVC是什么
https://oujun.work/2024/06/11/mvc.html
作者
欧俊
发布于
2024年6月11日
许可协议