MVP,MVC,MVVM的区别(概念重构)

MVC

Model:

模型模式的核心组成部分。它是应用程序的动态数据结构,独立于用户界面。它直接管理应用程序的数据,逻辑和规则。
也可以理解为:针对业务逻辑 建立的数据结构和相关的类 它主要负责网络请求 数据库操作.i/o操作等

View:

视图任何信息表示,如图表或表格。可以使用相同信息的多个视图,例如管理条形图和会计师的表格视图。
也可以理解为:xml布局 以及java代码 动态view部分

Controller:

调节器接受输入并将其转换为模型或视图的命令。

在这里插入图片描述
他们的通信方式也如上图所示,即View层触发操作通知到业务层完成逻辑处理,业务层完成业务逻辑之后通知Model层更新数据,数据更新完之后通知View层展现。在实际运用中人们发现View和Model之间的依赖还是太强,希望他们可以绝对独立的存在,慢慢的就演化出了MVP。

MVP

Model

模型模式的核心组成部分。它是应用程序的动态数据结构,独立于用户界面。它直接管理应用程序的数据,逻辑和规则。

View

视图任何信息表示,如图表或表格。可以使用相同信息的多个视图,例如管理条形图和会计师的表格视图。

Presenter

presenter
所有和网络数据挂钩的东西 都在presenter中
P可以给我们业务逻辑的复用 以及单项测试
操作数据的业务逻辑都放到了P层 P层测试上下拉刷新

这儿涉及到MVP和MVC的区别:

1. p是和v 互相持有的
2. MVC的view可以直接调用model

在这里插入图片描述
Presenter 替换掉了Controller,不仅仅处理逻辑部分。而且还控制着View的刷新,监听Model层的数据变化。这样隔离掉View和Model的关系后使得View层变的非常的薄,没有任何的逻辑部分又不用主动监听数据,被称之为“被动视图”。

MVVM

起源:

MVVM由Microsoft架构师Ken CooperTed Peters专门发明,用于简化用户界面事件驱动编程。该模式已合并到Windows Presentation Foundation(WPF)(Microsoft的.NET图形系统)和Silverlight(WPF的Internet应用程序衍生版)中。微软WPF和Silverlight架构师之一John Gossman 于2005年在他的博客上宣布了MVVM
在这里插入图片描述

Model

模型指的是代表真实状态内容领域模型(面向对象的方法),或代表内容数据访问层(以数据为中心的方法)

View

与模型 - 视图 - 控制器(MVC)和模型 - 视图 - 展示器(MVP)模式一样,视图是用户在屏幕看到的结构布局外观。它显示模型的表示,并接收用户与视图的交互(点击,键盘,手势等),并通过数据绑定(属性,事件回调,将这些处理转发到视图模型)等等,用于链接视图和视图模型。

viewModel

查看模型该视图模型是视图暴露公共属性命令的抽象。MVVM不是MVC模式的控制器,也不是MVP模式的演示者,而是有一个绑定器,它可以自动化视图模型中视图及其绑定属性之间的通信。视图模型已被描述为模型中数据的状态。视图模型与MVP模式中的Presenter之间的主要区别在于,演示者具有对视图的引用,而视图模型则没有。相反,视图直接绑定到视图模型上的属性以发送和接收更新。为了有效地运行,这需要绑定技术或生成样板代码来进行绑定。活页夹声明数据和命令绑定是MVVM模式中隐含的。在Microsoft 解决方案堆栈中,绑定程序是一种称为XAML的标记语言。

至于MVVM基本上和MVP一模一样,感觉只是名字替换了一下。他的关键技术就是今天的主题(Data Binding)。View的变化可以自动的反应在ViewModel,ViewModel的数据变化也会自动反应到View上。这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值