浅谈MVC、MVP和MVVM架构

时间:2022-07-31 21:15:16

1、MVC架构

MVC(Model-View-Controller)是最常见的软件架构之一,应用十分广泛。

1) 软件可以分成三个部分:

① 视图(View):用户界面。

② 控制器(Controller):业务逻辑。

③ 模型(Model):数据保存。

2) 三个部分之间的通信方式:

① View接受用户的指令。

② View将请求传送给Controller。

③ Controller完成业务逻辑后,要求 Model 改变状态。

④ Model更新View的数据。

3) MVC架构的特点:

所有通信都是单向的。

浅谈MVC、MVP和MVVM架构


2、MVP架构

将 Controller 改名为 Presenter,同时改变了通信方向。和MVC不同的是,Presenter会反作用于View,而MVC中Controller只会被动地接受View的指挥。

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。

MVP与MVC的区别是MVP中的Model与View之间不通信。

1) MVP架构的特点:

① 各部分之间的通信都是双向的。

② View 与 Model 不发生联系,都通过 Presenter 传递。

③ View 不部署任何业务逻辑,即没有任何主动性,称为被动视图,所有逻辑都部署在Presenter。

2) 三个部分之间的通信方式:

① View接受用户的指令。

② View将请求传送给Presenter。

③ Presenter完成业务逻辑后,要求 Model 改变状态。

④ Model通知Presenter数据更新。

⑤ Presenter更新View的数据。

3) MVP架构的优势:

① Model与View完全分离,修改互不影响。

② 高效:主要的程序逻辑都在Presenter里实现。

③ 一个Presenter可用于多个View,而不需要改变Presenter的逻辑,因为View总是比Model变化频繁。

浅谈MVC、MVP和MVVM架构


3、MVVM架构

将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

MVVM与MVP的区别是它采用双向绑定,处理接收事件和View更新的工作不再需要开发者来完成,而可以交给框架。

1) MVVM架构的特点:

双向绑定——View/Model的变动,自动反映在 ViewModel,反之亦然。

2) 三个部分之间的通信方式:

① View接受用户的指令。

② View将请求传送给ViewModel。

③ ViewModel完成业务逻辑后,要求 Model 改变状态。

④ Model通知ViewModel数据更新。

⑤ ViewModel更新View的数据。

3) MVVM架构的优点

① 低耦合:View和Model可以相互独立地修改,一个ViewModel可以绑定到不同的View上,View变化时Model可以不变,Model变化时View也可以不变。 

② 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 

③ 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。 

④ 可测试:测试可以针对ViewModel来写。

浅谈MVC、MVP和MVVM架构