浅谈 MVC、MVP、MVVM 模式

MVC 架构:Model - View - Controller

  • Model:业务逻辑和实体模型。
  • View:对应于布局文件。
  • Controller:对应于 Activity。
    这里写图片描述
    View 可以与 Model 直接交互。
    Controller 是基于行为的,并且可以被多个 View 共享,可以负责决定显示哪个 View。

MVP架构:Model - View - Presenter

  • Model:业务逻辑和实体模式。——提供数据。
  • View:对应于 Activity,负责 View 的绘制以及用户交互。 ——负责显示。
  • Presenter:负责完成 View 与 Model 的交互。——负责逻辑的处理。
    这里写图片描述 这里写图片描述
    View 不直接与 Model 交互,而是通过与 Presenter 交互来与 Model 间接交互。
    Presenter 与 View 的交互是通过接口来进行的。
    通常 View 与 Presenter 是一对一的,但复杂的 View 可能绑定多个 Presenter 来处理逻辑。

MVP 的优点
1. 降低耦合度、隐藏数据,Activity 中代码更简洁;
2. 模块职责划分明显;
3. 方便测试驱动开发;
4. 代码复用度较高;
5. 代码灵活性。

MVP 与 MVC 的重大区别:在 MVP 中 View 并不直接使用 Model,它们之间的通信时通过 Presenter(MVC 中的 Controller)来进行的,所有的交互都发生在 Presenter 内部,而在 MVC 中 View 会直接从 Model 中读取数据而不是通过 Controller。

总结:从 MVC 到 MVP 的一个转变,就是减少了 Avtivity 的职责。减轻了它的负担,简化了 Activity 中的代码和一些操作,将逻辑代码提取到了 Presenter 中进行处理,降低了其耦合度。


MVVM 架构:Model - View - ViewModel

  • Model:保存数据的简单类对象,它只能包含属性和属性验证(验证属性值是否正确),而不负责存储数据、事件点击、复杂运算、业务规则和其他操作。——基本业务逻辑。
  • View:呈现给用户的数据界面,很多情况下,它是以数据模板(DataTemplates)的方式告诉应用如何呈现类中内容的,如果代码内容只跟 View 有关(比如社交焦点和执行动画),可以将代码写在 View 的后台。——显示内容。
  • ViewModel:用来处理逻辑。你的后台代码(数据访问、点击事件、复杂运算、业务规则验证等)都写在这,这里面的代码是 View 的反应。——将前面两者联系在一起的对象

一个 ViewModel 接口提供了两个东西:动作和数据。动作改变 Model 的下层(click listener,监听文字改变的 listener 等等);数据是 Model 的内容。

MVVM 的优点
1. 低耦合。视图 View 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的“View”上,当 View 变化的时候 Model 可以不变,当 Model 变化的时候 View 也可以不变。
2. 可重用。你可以把一些视图逻辑放在一个 ViewModel 里面,让很多 View 重用这段视图逻辑。
3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。4、可测试。界面素来是比较难于测试的,而现在测试可以针对 ViewModel 来写。

MVVM 框架由来:是 MVP(Model - View - Presenter)模式与 WPF 结合的应用方式时发展演变过来的一种新型架构框架,它立足于原有 MVP 框架并且把 WPF 的新特性糅合进去,以应对客户日益复杂的需求变化。

MVVM 和 MVP 的关系:MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致,唯一的区别是,它采用双向绑定(data-bingding):View 的变动,自动反映在 ViewModel,反之亦然。这样开发者就不用处理接收事件和 View 更新的工作,框架已经帮你做好了。


参考文章:
浅谈Andorid开发中的MVP模式
浅谈开发中的MVVM模式及与MVP和MVC的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVCMVPMVVM是常用的软件设计模式,用于分离应用程序的不同组件,提高代码的可维护性和可重用性。以下是它们的概念和区别: 1. MVC模式(模型-视图-控制器):MVC模式是最古老也是最常用的设计模式之一。它将应用程序分为三个组件:模型、视图和控制器。模型负责处理数据和业务规则,视图负责展示数据给用户,控制器负责处理用户输入并更新模型和视图。MVC模式通过分离关注点,使得修改一个组件对其他组件没有依赖,增强了代码的可维护性。 2. MVP模式(模型-视图-展示器):MVP模式是基于MVC模式的演化,主要用于桌面和移动应用程序的开发。它与MVC的不同之处在于,视图和控制器被合并成一个展示器,展示器负责处理用户输入、更新模型并更新视图。MVP模式通过与视图分离,使得视图的变化不会影响展示器的逻辑。这样,在测试时可以更轻松地独立对展示器进行单元测试。 3. MVVM模式(模型-视图-视图模型):MVVM模式是一种用于构建用户界面的设计模式。它将视图的状态和行为抽象成一个视图模型,视图模型负责处理用户输入、保存视图状态、与模型进行交互,并通过数据绑定将数据自动更新到视图上。MVVM模式通过数据绑定机制,使得视图和模型之间的通信变得更简单,提高了可维护性和可重用性。它常用于Web前端开发和桌面应用程序的现代界面开发。 总结来说,MVCMVPMVVM是三种常见的软件设计模式MVC模式是最早的一种,将应用程序分为模型、视图和控制器,用于分离关注点。MVP模式是基于MVC模式的演化,通过将视图和控制器合并成一个展示器,便于测试和维护。MVVM模式是用于构建用户界面的设计模式,通过视图模型和数据绑定机制,实现了视图与模型之间的解耦。每种模式都有自己的特点和适用场景,根据具体需求选择合适的模式可以提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值