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 Cooper和Ted 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更新的工作,框架已经帮你做好了。