MVP模式

MVP 模式总结 文章目录前言为什么使用 MVP 模式什么是 MVP 模式 前言 最近学习了 MVP 模式,趁着现在还印象深刻,赶紧写下这篇博客进行记录。这里需要特别提醒一点的是,MVP 应当理解成一种思想,无需局限于某一种实现方式或套路,每个人都可以有自己的 MVP 实现。废话不多说,现在开始进入正文吧! 为什么使用 MVP 模式 在介绍 MVP 之前,我们先来了解下 MVP 的前身——MVC。MVC 的全称是 ... 阅读详情

MVC和MVP的区别?


  MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。

  在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

  MVP如何解决MVC的问题?

  在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用! 不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试 —— 而不需要使用自动化的测试工具。 我们甚至可以在Model和View都没有完成时候,就可以通过编写Mock Object(即实现了Model和View的接口,但没有具体的内容的)来测试Presenter的逻辑。 在MVP里,应用程序的逻辑主要在Presenter来实现,其中的View是很薄的一层。因此就有人提出了Presenter First的设计模式,就是根据User Story来首先设计和开发Presenter。在这个过程中,View是很简单的,能够把信息显示清楚就可以了。在后面,根据需要再随便更改View,而对Presenter没有任何的影响了。 如果要实现的UI比较复杂,而且相关的显示逻辑还跟Model有关系,就可以在View和Presenter之间放置一个Adapter。由这个 Adapter来访问Model和View,避免两者之间的关联。而同时,因为Adapter实现了View的接口,从而可以保证与Presenter之间接口的不变。这样就可以保证View和Presenter之间接口的简洁,又不失去UI的灵活性。 在MVP模式里,View只应该有简单的Set/Get的方法,用户输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接访问Model —— 这就是与MVC很大的不同之处。

  MVP的优点

  1、模型与视图完全分离,我们可以修改视图而不影响模型。
  2、可以更高效地使用模型,因为所有的交互都发生在一个地方 —— Presenter内部。
  3、我们可以将一个Presener用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。

  MVP的缺点

  由于对视图的渲染放在了Presenter中,所以视图和Persenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现Html的Presenter现在也需要用于呈现PDF了,那么视图很有可能也需要变更。

MVC和MVP深度对比 从mvc平滑过渡到mvp示例,详情请看博客 博客地址:http://blog.youkuaiyun.com/yuzhiqiang_1993/article/details/79082234 立即下载

相关推荐

MVC和MVP的区别

MVC和MVP的区别

Android 进阶之 MVP(1)

这只能说明 Android 中级以下的岗位饱和了,**现在高级工程师还是比较缺少的**,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。中级以下的岗位饱和了,**现在高级工程师还是比较缺少的**,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

goodhighting的博客 562

模糊高清修复真王炸!ComfyUI-SeedVR2-Kontext(画质修复+P图)本地部署教程

SeedVR2_comfyUI 是由字节跳动 Seed 实验室与南洋理工大学 S-Lab 联合开源的,专为 ComfyUI 用户开发的插件版本,官方项目名为。它主打,在图像超分上表现尤其亮眼,被多位实测者称为“目前模糊图像修复最强模型“。SeedVR2 在图像超分任务中表现突出,尤其擅长恢复模糊图像的细节,被称为“模糊高清修复真王炸”。特别的,也适合用于文字密集图像(如截图、扫描文档、老照片字幕)修复。模型通过对抗训练 + 特征匹配损失提升细节真实感,理论上对文字边缘锐化也有帮助。

SJJS_1的博客 2686

MVP和MVC的区别

前提回顾 MVC架构:   MVC就是Model-View-Controller,它们的作用是:   它们之间的关系如下图所示:     View传送指令到Controller,Controller完成业务逻辑后,改变Model的状态,Model将新的数据发送到View,这就是MVC模式的处理逻辑。 MVP架构: MVP是Model-View-Presenter,它们的作用如下...

xxdw1992的博客 5339

MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件

本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。

weixin_30696427的博客 281

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

MVC与MVP的区别

1.MVC MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:[1] Model(模型)表示应用程序核心(比如数据库记录字段)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。 MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责..

shaoNianABin123的博客 4537

哈工大OS实验四——进程运行轨迹的跟踪与统计

进程运行轨迹的跟踪与统计 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出 CPU;当文件读写完毕以后,操作系统会在将其切换成就绪态,等待进程调度算法来调度该进程执行…… process.c解读 void cpuio_bound(int last, int cpu_

优快云-ych 1002

模型 MVP

MVP模式是指"Minimum Viable Product"(最小可行产品)模式。它是一种产品开发和交付的方法论,旨在通过尽可能少的功能和资源,快速验证产品的可行性和市场需求。MVP模式强调在早期阶段构建一个最基本的产品版本,以便尽早获得用户反馈和学习,从而指导后续的迭代和改进。MVP模式最早由创业家Eric Ries在他的书《创业的科学》(The Lean Startup)中提出。该模式受到了精益生产和敏捷开发方法的启发,旨在减少资源浪费和市场失败的风险,通过快速迭代和学习来构建成功的产品。

wangdsh的博客 2179

基于单片机的室内空气质量监控系统设计

摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 方案选择 3 1.2 系统控制原理 4 2系统硬件设计 5 2.1 单片机的选择与设计 5 2.2 温湿度模块设计 6 2.3 甲醛采集模块设计 8 2.4 显示器模块设计 9 2.5 按键模块设计 10 2.6 报警模块设计 11 2.7 加湿及风扇模块设计 11 3系统软件设计 13 3.1 总流程方案设计 13 3.2 温湿度获取的软件设计 14 3.3 液晶屏LCD1602的软件设计 15 4系统调试 13 4

Q_1928499906的博客 2702

STM32G4系列数字LLC控制程序开发实战

本文详细介绍了基于STM32G4系列MCU的数字LLC控制程序开发全流程。从开发环境搭建、中断服务函数设计,到核心的电压环PID算法、Burst模式控制、状态机设计以及软启动优化,提供了完整的实战代码和关键参数调试经验,帮助开发者高效实现高性能数字电源控制。

weixin_29185493的博客 281

Android MVP模式详解

一、MVP概述 MVP,全称 Model-View-Presenter,即模型-视图-层现器。 提到MVP,就必须要先介绍一下它的前辈MVC,因为MVP正是基于MVC的基础发展而来的。两个之间的关系也是源远流长。 MVC,全称Model-View-Controller,即模型-视图-控制器。 View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 但是View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的

hdhhd的博客 8960

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 287

【iOS】MVP模式

笔者在之前的iOS开发中学习了MVC架构,最近偶然看到了有关于MVP的内容,下面是笔者对于这部分的内容的一个个人理解。如有纰漏请,还请不吝赐教。

qq_73106050的博客 1395

某招标公告网和vcaptcha验证码识别逆向

本文分析了某验证码系统的加密流程及破解思路。首先通过反混淆技术定位到加密函数,拆解了包含指纹函数、环境参数等组成的加密字符串。研究发现验证码生成涉及canvas指纹、环境检测等反爬机制,可通过模拟浏览器环境绕过。验证过程需要解密图片顺序,通过work2.js计算还原图片位置,再结合滑动轨迹、时间等参数生成验证请求。文章仅提供技术研究思路,强调需遵守法律法规,严禁非法破解信息系统。完整流程包括环境模拟、加密参数还原、图片处理和轨迹生成等步骤,成功率较高。

码王吴彦祖的博客 579

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android之MVP模式

今天来看看Android的MVP模式,使用框架开发,开发速度以及代码的目录结构会别有一番风格。 Google的demo:https://github.com/googlesamples/android-architecture

I_do_can的博客 5353

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MVP模式之初识MVP

犹豫了很久,还是决定静下心来写一写自己实践的MVP模式相关的内容,我怕我再不写,就要丢失了那些采坑的记忆,就要丢失了写博客的习惯,最可怕的是,再不写,可能就帮不了那些真正想要了解和使用MVP的童鞋们了。 我知道有很多很多关于MVP的文章,甚至还有很多很多不同的MVP扩展,看我依然觉得我要继续写下去,因为我坚定地认为,我也可以有别具一格的MVP。 这个系列大概有三个部分: 了解MVP和原...

Rookie的专栏 1667

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MVP模式总结

文章目录1 介绍1.1 背景1.2 为什么用MVP?2 实现2.1 入门2.1.1 方式一2.1.1.1 界面:2.1.1.2 目录结构:2.1.1.3 代码:2.1.1.4 总结:2.1.2 方式二2.1.2.1 页面:2.1.2.2 目录结构:2.1.2.3 代码:2.1.2.4 总结:2.1.3 方式三2.1.3.1 页面:2.1.3.2 目录结构:2.1.3.3 代码:2.1.3.4 总结...

u010164571的专栏 396

浅谈MVP模式

背景分析 在MVC模式下,大量的Controller与View交互,Controller和Model承接的部分都在Activity中,这样,在复杂UI的情况下,就会造成Activity有大量的逻辑代码。造成了Activity臃肿。所以,MVP框架就引起了关注。 MVP框架图 包括  两种模式PV模式和SC模式 PV模式的特点:----- 这种模式使用比较广泛

王学明 3633

mvp模式复用android,MVP模式

简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。中文名MVP模式外文名MVP mode演变MVC方式直接Model中读取数据逻辑PresenterMVP模式概述编辑MVP从MVC演变而来,通过表示器...

weixin_29230805的博客 439

Android中的MVP模式

MVP的基本概念

橡果生长记的博客 1341

mvc模式mvp模式优缺点_关于MVP模式的思考

mvc模式mvp模式优缺点 您好,亲爱的读者们,欢迎我对MVP(模型-视图-演示器)模式的想法,我终于开始学习了。 我之前曾尝试过,但是每个人总是如此抽象地解释它,即使与MVVM抽象地比较,我也不知道它是什么。 但是我最近看到了一些实时编码片段中正在实施的模式,我实际上没有太多可分享的内容。 我将重点介绍典型的实现中的一种迷你反模式,我想为其提供替代思路。 关于MVP的一般思考 首先,我会...

danpu0978的博客 327

MVP模式解析实践

我们为什么要使用MVP?

郭霖 1177
上一篇: image元素的src属性值与getAttribute('src')值
下一篇: install xampp for mac
FuDesign2008
博客等级 码龄18年 44粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值