mvp模式

MVP和MVC有什么区别?

落花浮王杯 提交于 2019-12-06 11:50:51
当超越 RAD (拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为 Model-View-Controller , Model-View-Presenter 和 Model-View-ViewModel 。 我的问题包括三个部分: 这些模式解决了哪些问题? 它们有何相似之处? 它们有何不同? #1楼 模型视图演示者 在 MVP中 ,Presenter包含视图的UI业务逻辑。 View委托的所有调用均直接传递给Presenter。 演示者也直接从视图中分离出来,并通过界面与之对话。 这是为了在单元测试中模拟View。 MVP的一个共同属性是必须有很多双向分配。 例如,当某人单击“保存”按钮时,事件处理程序将委派给演示者的“ OnSave”方法。 保存完成后,演示者将通过其界面回调视图,以便视图可以显示保存已完成。 MVP往往是在Web窗体中实现独立表示的非常自然的模式。 原因是View总是首先由ASP.NET运行时创建。 您可以 找到有关这两种变体的更多信息 。 两个主要变化 被动视图: 视图尽可能愚蠢,并且包含几乎为零的逻辑。 演示者是与视图和模型对话的中间人。 视图和模型完全相互屏蔽。 模型可以引发事件,但是演示者订阅了这些事件以更新视图。 在Passive View中,没有直接的数据绑定

MVC 与 MVP 并无两样

点点圈 提交于 2019-12-06 06:24:01
关于 MVC 的定义介绍,摘一段百度百科介绍: MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。 简单也可以这样理解,View 单纯负责 UI,如果要更新 UI 数据,则去调用 Controller,让 Controller 去控制 UI ,Controller 不生产数据,数据层都在 Model 中,而 Controller 持有 Model 层引用,所以它会调用 Model 层然后接受到数据,接着分发给 UI,整个流程就类似于这样。 实际上,这就是一种简单的分层机制,不同的层次做不同的事,让代码结构更清楚,各层职责也清楚,不用把所有逻辑写一块,导致代码臃肿,而且复用性也差。 在 16、17 年左右,Android 领域大家突然开始讨论 MVP,也有很多人讨论两者的区别,实际上,个人觉得 MVC 跟 MVP 几乎没啥差别,同样的思想只是换了一个名字而已,Controller VS Presenter,都是控制器的角色。 MVP 为什么在 Android 中被大家所讨论,最主要的原因还是由于 Activity 机制。每一个 Android

MVP和MVC有什么区别?

懵懂的女人 提交于 2019-12-05 10:10:58
当超越 RAD (拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为 Model-View-Controller , Model-View-Presenter 和 Model-View-ViewModel 。 我的问题包括三个部分: 这些模式解决了哪些问题? 它们有何相似之处? 它们有何不同? #1楼 模型视图演示者 在 MVP中 ,Presenter包含视图的UI业务逻辑。 View委托的所有调用均直接传递给Presenter。 演示者也直接从视图中分离出来,并通过界面与之对话。 这是为了在单元测试中模拟View。 MVP的一个共同属性是必须有很多双向分配。 例如,当某人单击“保存”按钮时,事件处理程序将委派给演示者的“ OnSave”方法。 保存完成后,演示者将通过其界面回调视图,以便视图可以显示保存已完成。 MVP往往是在Web窗体中实现独立表示的非常自然的模式。 原因是View总是首先由ASP.NET运行时创建。 您可以 找到有关这两种变体的更多信息 。 两个主要变化 被动视图: 视图尽可能愚蠢,并且包含几乎为零的逻辑。 演示者是与视图和模型对话的中间人。 视图和模型完全相互屏蔽。 模型可以引发事件,但是演示者订阅了这些事件以更新视图。 在Passive View中,没有直接的数据绑定

MVC/MVP/MVVM

蹲街弑〆低调 提交于 2019-12-04 09:34:04
MVC 1,M:业务逻辑处理:数据库操作,网络操作,耗时任务(各种java bean,还有一些类似repository类) 2,V:处理数据显示的部分:xml 3,C:Activity处理用户交互问题:Activity 优点:便于UI视图的显示和界面的分离 特点:1,耦合度低:代码的关联程度不是很高,可以拆解达到解耦的目的 2,可扩展性好 3,模块职责划分明确 MVC 当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。 view层和model层是相互可知的,这意味着两层之间存在耦合,耦合对于一个大型程序来说是非常致命的,因为这表示开发,测试,维护都需要花大量的精力。 MVC总结: 1,利用MVC设计模式,使得项目有了很好的可扩展和维护性 2,controller(控制器)是一个中间桥梁的作用 3,什么时候适合使用MVC 当项目需求复杂,迭代频繁,又比较多,MVC模块化设计,使项目模块化且饱满 MVP 1,M:依然是业务逻辑和实体模型 2,V:对应于Activity,负责view的绘制以及用户交互 3,P:负责完成View与model间交互(实现通过接口) 更加耦合低 MVP 最明显的差别就是view层和model层不再相互可知,完全的解耦

Android MVP模式简单实践

匿名 (未验证) 提交于 2019-12-03 00:32:02
model:数据层,如从数据库获取数据、或HTTP请求 view:即UI层:只包含Andorid API的调用 presenter:展示层,持有view的对象和model的对象,负责把model层获取的数据展示到view层。 画图来展示就是: 以下以一个简易的知乎日报的实现作为实例: 话不多说,直接上代码。 首先是主页布局: <?xml version="1.0" encoding="utf-8"?> < layout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" > < data /> < LinearLayout xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = "com.py.cheng.nong.xiang.dailyreadjava.ui.MainActivity" > < android

MVC MVP MVVM

匿名 (未验证) 提交于 2019-12-03 00:14:01
MVC(Model-View-Controller) 互动模式: 事件源E->View->Controller->Model (点击按钮) 事件源E->Controller->Model (系统内部事件,如网络下载完成) MVVM(Model - View - ViewModel ) android 中完成 VM 功能的是 Data-binding 机制 如果MVP + dataBinding 一起混合用 就是 MVP + MVVM 来源:博客园 作者: jald 链接:https://www.cnblogs.com/cyy12/p/11656416.html

你真的理解了MVC, MVP, MVVM吗?

匿名 (未验证) 提交于 2019-12-02 21:53:32
来自: 前言: 准备写这篇文章的时候 , 我自认为对MVC已经有深刻理解了,可是画图的时候发现,理解还是有漏洞,于是又阅读,思考,整理,加深了理解, 写了这篇文章, 估计还有漏洞,欢迎讨论。 这再一次说明了写作的好处: 很多时候自以为理解了,实际上脑海中有很多想当然的假设,写作会把这些假设给暴露出来。 大概是二三十年前, 人类逐渐从命令行界面时代走出来,进化到了GUI时代。 (一个命令行程序) (一个带有图形界面的桌面应用程序 ,自己画的,有点丑啊) 每当人类努力地开发新的桌面GUI程序的时候, 至少要搞定下面几类工作: 1. 界面(以及界面中元素的)布局。 这是一件挺费劲的工作, 要尽可能地美观漂亮,要不然就卖不出去。 2. 界面上有些“逻辑”需要处理 比如上图中那个薪水计算程序,“计算” 按钮默认是灰色的, 不能点击,用户输入了税前收入以后, “计算”按钮就会被激活,表示计算了。 3. 所谓的业务逻辑。 用户点击了“计算”按钮以后,计算五险一金,个人所得税和税后收入。 这三者搅在一起,让程序代码凌乱不堪,稍微复杂点儿的程序就长达几千行, 不断地挑战着程序员的底线,修改别人的代码,添加新的功能要比从头写难好多倍! 大家都在泥潭中挣扎。 桌面应用程序的 MVC 程序越来越复杂,Bug越来越多,没办法, 大家只好去求编程上帝。 上帝说: 想从困境中走出来,一定要实现关注点分离

MVC MVP MVVM

人走茶凉 提交于 2019-12-01 04:59:02
MVC(Model-View-Controller) 互动模式: 事件源E->View->Controller->Model (点击按钮) 事件源E->Controller->Model (系统内部事件,如网络下载完成) MVP (Model- View - Presenter ) MVVM(Model - View - ViewModel ) android 中完成 VM 功能的是 Data-binding 机制 如果MVP + dataBinding 一起混合用 就是 MVP + MVVM 来源: https://www.cnblogs.com/cyy12/p/11656416.html

Android进阶之路(2)-详解MVP

余生长醉 提交于 2019-11-29 03:11:30
### MVP简介 >MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的[地方](https://baike.baidu.com/item/%E5%9C%B0%E6%96%B9/2262175):Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。 对于MVC不了解的朋友可以查此文: [Android进阶之路(1)-详解MVC](https://www.jianshu.com/p/285f6a8d971f) **Android中的MVP:** - M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。和MVC类似 - V层:对应的Activity,负责xml绘制与页面交互 - P层:负责View与Model之间的交互 ![](https://img2018.cnblogs.com/blog/1312938/201909/1312938-20190901084219353-399431689.png) ### 为什么要用MVP 我们先想想上篇文章,我们讲到为什么要用MVC,当时我们总结了几点: - 代码复用 - 耦合性低 - 方便维护的高等 然而我们在写MVC项目时候,也发现了一些问题: 1

前端开发中的 MVC、MVP、MVVM 模式

痞子三分冷 提交于 2019-11-28 20:30:12
MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式。不同于设计模式(Design Pattern),只是为了解决一类问题而总结出的抽象方法,一种架构模式往往使用了多种设计模式。 要了解MVC、MVP和MVVM,就要知道它们的相同点和不同点。不同部分是C(Controller)、P(Presenter)、VM(View-Model),而相同的部分则是MV(Model-View)。 Model&View 这里有一个可以对数值进行加减操作的组件:上面显示数值,两个按钮可以对数值进行加减操作,操作后的数值会更新显示。 我们将依照这个“栗子”,尝试用JavaScript实现简单的具有MVC/MVP/MVVM模式的Web应用。 Model Model层用于封装和应用程序的业务逻辑相关的数据以及对数据的处理方法。这里我们把需要用到的数值变量封装在Model中,并定义了add、sub、getVal三种操作数值方法。 var myapp = {}; // 创建这个应用对象 myapp.Model = function() { var val = 0; // 需要操作的数据 /* 操作数据的方法 */ this.add = function(v) { if (val < 100) val += v; }; this