Day02:MVC、MVP、MVVM 浅谈

前言

关於介绍 MVC、MVP、MVVM 的文章,
网络上随便搜索都可以找到超多。
MVC、MVP、MVVM 都是一种软件结构模式,
我在这篇文章中会大致介绍 MVC、MVP、MVVM。

MVC

MVC 模式(Model-View–Controller)把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

  • Model 负责存储、检索、操纵来自数据库或者网络的数据
  • View 负责用户界面
  • Controller 主要负责业务逻辑处理

Controller 是 Model 和 View 之间的连接器。
在 MVC 中,Controller 管理 View 的整个生命周期,Controller 持有 View、Model,Controller 和 View 之间不够独立,ViewController 最後需要处理很多事情,因此变得很厚重。
这也导致 Controller 测试困难,View 层的控制能力太弱,
同时也因为 Controller 处理所有的业务逻辑,独立性强,所以当业务逻辑需要变更的时候,只需要动到 Controller 就好了。

链接附上:https://zh.wikipedia.org/zh-tw/MVC

MVP

MVP(Model-View-Presenter),是电脑软件设计工程中一种对针对 MVC 模式,再审议後所延伸提出的一种软件设计模式。

  • Model 负责存储、检索、操纵数据
  • View 处理用户界面
  • Presenter 是 View 与 Model 交互的中间枢纽,处理与用户交互的逻辑

MVP 的产生是为了解决 MVC 中的 Controller 越来越大包以至於测试困难的问题。
在 MVP 中 View 管理 Presenter,Presenter 管理 Model,View 不能直接访问 Model,
通过这样,将 Presenter 真正独立出来,所以测试的时候就可以独立测试 Presenter 业务逻辑了。

链接附上:https://zh.wikipedia.org/wiki/MVC

MVVM

MVVM(Model–View–ViewModel)

  • Model 负责存储、检索、操纵数据
  • View 代表用户界面
  • ViewModel 负责业务逻辑,并且连接 View 和 Model
    viewmodel 可以连接到一个 View 或者多个 View。

在 MVVM 中,View 可以独立於 Model,ViewModel 也可以连接到一个 view 或者多个 view 上,View、Model 之间的独立性强,将业务逻辑与视图独立开来。
同时也能把一些视图逻辑放在一个 ViewModel 里面,这可以让很多 View 重复用这段视图逻辑,可以减少写重复的工作。
不过也因为 Model、View 的紧密联系、互相绑定,所以一旦出了bug,则很难判断到底是 Model 还是 View 上出了问题。

链接附上:https://zh.wikipedia.org/zh-tw/MVVM

後记

这真的是浅谈啦,
我在学习过程上主要是用 MVVM 进行开发的,
所以对 MVC、MVP 不太了解,
因此写这篇文也是为了让我更了解这三种结构模式。


<<:  Day01【JS】Behavior Delegation 行为委派

>>:  【把玩Azure DevOps】Day5 版本控制系统Repos:建立第二个Repo,TFVC Repo

某航空裁员後被骇

故事依时间序简述 故事背景:某航空公司(以下简称某航) 某航於2017上半年裁员,共计裁减约600名...

求救! 网站背景无法显示

我的网站在电脑上显示的画面是正常的,但是一上传到服务器上,背景和影片就无法显示了,到底是为什麽~~ ...

理解React的setState到底是同步还是非同步(下)

在上个月初的时候,偶然在IThelp看到这篇讨论 setState後画面没有立即Render,决定趁...

D3JsDay26圆圈图的实战力,直辖市人口比例-带入真实资料做圆圈图

昨天已经介绍了产生圆圈图的范例,今天将要带入真实资料作范例,接下来将会使用先前的县市人口数的资料制作...

DAY14 - firestore 使用条件来进阶查询

上一篇介绍 firestore CRUD 的各种方式,今天要来介绍进阶的查询资料方式,利用条件去过滤...