MVP模式学习

Android 从新学习之MVP模式 Android 从新学习之MVP模式 这是为自己记录一点记忆 1.MVC与MVP模式 1.MVC即Model-View-Controller。M:逻辑模型,V:视图模型,C:控制器 2、MVP即Model-View-Presenter。M:逻辑模型,V:视图模型,P:表示器 这里不做过多解释,大家应该都懂 2.MVP实战 直接写一段从网络获取数据的案例 (1... 阅读详情
MVP模式简介
mvp的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
MVP和MVC的区别
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也是比较困难的,至少那些业务逻辑是无法重用的。
解决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很大的不同之处
优缺点
优点
1、模型与视图完全分离,我们可以修改视图而不影响模型
2、可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
3、我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
缺点
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁。还有一点需要明白,如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。一旦视图需要变更,那么Presenter也需要变更了。比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了,那么视图很有可能也需要变更。
KANO分析模型 KANO分析模型的基本概念,目的意义,应用场景,实现方法和示例等 阅读详情

相关推荐

安卓集成华为HMS Scankit实现自定义扫码功能

实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw

qq_47625961的博客 5510

Retrofit+MVP模式学习

Android入门学习——Retrofit+MVP模式学习简单使用 最近闲着无聊的时候在网上随意闲逛的时候,Retrofit、RxJava、RxAndroid这几个词,顺带着okHttp、MVP出现的频率蛮高。这些东西都不会,就赶紧学习一下。RxJava和RxAndroid暂时先放弃。先学习Retrofit+MVP模式进行开发。 首先强烈感谢鸿洋大神和优快云的另一位博主还不走A。

Charles的博客 430

工业组态软件Intouch(单机版)入门{第一篇}

通俗来讲Intouch就是一个能将PLC里的信号显示在画面上的软件。

weixin_41571357的博客 1万+

ANdroid mvp 模式 优秀的学习demo

https://github.com/youxin11544/MVP-RxJava-Hybride

l_215851356的专栏 477

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2902

Python学习24:中国古代数学问题——物不知数(Python123)

意思是说有一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。题目为‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?现假设物品总数不超过n (n

weixin_60530224的博客 2万+

unity中MVP模式学习

#####该文章是个人学习MVP模式的总结和实践,水平有限,谢谢指点。 目录 目录 前言 一、MVP模式是什么? 二、unity中实现 1.整体流程 2.具体实现 总结 前言 在游戏开发的过程中,经常会遇到修改界面风格,但是界面的功能没有发生变化的情况。如果界面和逻辑可以分开,那么改动就会减少。MVP模式可以把界面的显示,操作,和数据分离,很适合经常修改的界面。 一、MVP模式是什么? MVP全称为Model,View,Presenter。 Mod..

龟速爬行的程序员 3832

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

MVP模式的学习

MVP模式的学习MVP的意思: Model 业务逻辑和实体模型 View 对应于Activity,负责View的绘制以及与用户交互 Presenter 负责完成View于Model间的交互 下面以一个简单的登录程序来体会一下MVP在Android中的设计思想: 首先写Model层,需要一个实体类User:public class User { private String username; pr

yo_sunzhan的博客 516

YOLOv13必学核心:SKAttention选择性核注意力机制原理 + 实战全拆解

SKAttention的核心思想来源于人类视觉系统的一个重要特性:根据不同的视觉刺激,人眼能够自适应地调整感受野大小。SKAttention将这一生物学原理转化为深度学习中的注意力机制,通过动态选择和融合不同大小的卷积核,实现了自适应的多尺度特征提取。在人类视觉皮层中,不同的神经元具有不同大小的感受野,而且这些感受野的大小会根据视觉刺激的类型动态调整。本文将深入解析SKAttention模块的设计原理、数学基础、实现细节,以及其在YOLOv13目标检测框架中的集成应用,为读者提供全面而深入的技术理解。

FJN110的博客 96

2026年数字IC设计华为笔试带答案解析

这篇文章是一份数字IC设计工程师笔试的试卷结构和部分题目解析。试卷包含单选题31题(每题2分)、多选题10题(每题4分)和简答/编程题4题(每题7分),总分130分,考试时长120分钟。 摘要重点: 试卷涵盖数字IC设计的关键知识点,包括Verilog语法、时序逻辑、状态机设计、跨时钟域处理等; 题目解析详细说明了各选项的正确性,如非阻塞赋值特性(D错误)、功耗影响因素(C与组合逻辑级数弱相关)等; 包含实际工程问题,如DDR4接口电平(SSTL-1.2)、卡诺图变量排序(格雷码)等; 部分题目考察基础概念

Open 368

从Google的todo-mvp源码中学习MVP模式

从Google的todo-mvp源码中学习MVP模式 MVP : Model-View-Presenter MVP模式可以说是现在开发模式中的mvp了。MVP模式也是mvvm模式的一个基础。 Google在Github上面公布了一组官方的mvp samples:Google todo-mvp 通过对以下几个例子的源码分析,来深入学习MVP模式。 Sample Descrip

Programmer Training 1077

AI智能体丨使用Coze一键生成中式养生视频,39 条作品涨粉 37.9 万!(附保姆级教程)

本文介绍如何利用扣子(Coze)AI智能体工作流高效制作中式养生短视频。该方案通过AI自动生成养生文案、古风插画素材、语音合成和视频剪辑,将传统制作流程从2-3小时缩短至1-2分钟。工作流包含文案创作、音频生成、图片素材制作和视频合成四大模块,采用大模型处理各环节内容,最终输出可直接导入剪映的草稿文件。特别适合希望快速批量制作文化氛围感强、兼具干货与视觉效果的养生内容创作者,效率提升近百倍。

李同学Lino的博客 3025

学习MVC、MVP、MVVM模式

架构型设计模式 1、MVC模式 前端页面依据MVC思想开发的时候,可将页面分成3层部分,数据层部分、视图层部分、控制层部分。视图层可以调用数据层创建视图,控制器层可以调用数据层数据与视图层内的视图创建页面增添逻辑。 MVC代码 const MVC = {}; // 数据模型层 MVC.model = function(){ const M = {}; M.data = { demo1: {}, // ... }; return {

weixin_41559882的博客 247

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

讲Android mvp模式的书,Android MVP模式学习

imageMVP简介随着时代的发展,移动端UI越来越丰富、业务越来越复杂,用户对界面的美观、渲染的速度、数据读取的速度要求也越来越高。为了在保证拥有酷炫的UI、复杂的业务逻辑的条件下给用户更好的体验,需要对view、model、controller职责进行细分,让view专注于处理数据的可视化以及和用户的交互、让model专注于数据的处理。一种新的模式MVP(Model - View - Pres...

weixin_36201981的博客 159

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MVP模式学习笔记

MVP全称Model View Presenter,它是从经典的模式MVC演变而来,它与MVC最大的区别就在与将Model和View通过Presenter隔开了,不再允许其互相直接通信,而所有的消息都是通过Presenter这个中间人来传递,而这样做的目的主要是为了将数据和展示划出更明确的界限。

siguoyi的博客 1363

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

学习笔记,初对Android studio的MVP模式的理解,附带demo

以下为本人学习笔记。MVP模式,字如其名。代表Model Presenter View ,即模型,接口,视图。由MVC的Controller和Model和View组成,但代码多起来时,不适合调用,Controller是不适合调用模型的。所以引入MVP模式,使用接口之后就可以将Model和View分开,使程序修改时可以,只动Model或者View或Presenter。接下来是demo来解释这个MVP...

阿洪的博客 1350

Android 学习之MVP模式

由于前段时间面试,发现大多数公司开始问MVP模式,你会不会这种框架牧师,那时候表示不会,所以现在来恶补一下。 首先:什么是MVP模式?说一下我的理解。 M(Model层):在android中主要是处理数据的存在。比如你界面有一个按钮需要请求网络校验数据,那么校验数据的这步就应该放在Model层。 V(View层):这个就很好理解了,界面相关的东西都在View层,比如Activity,Frag

u014311373的博客 362

Android学习笔记MVP模式框架

Android学习笔记MVP模式框架1.MVP模式介绍: 在上一次学习中,我简单的介绍了MVC构架,这次我来简单的介绍下什么是MVP。对于MVP,他其实就是MVC的一个演化版本,MVP全称Model View Presenter。目前MVP在android应用开发中越来越重要了,相信不少的开发者也在各种讨论关于MVP的理论了。那么这个MVP模式他到底有哪些应用的好处呢?首先MVP能够有效的降低

GodV的博客 1153

MVP模式学习例子

MVP模式 https://blog.youkuaiyun.com/singwhatiwanna/article/details/80841705 https://blog.youkuaiyun.com/Swust_Zeng_zhuo_K/article/details/78760947 https://blog.youkuaiyun.com/jay100500/article/details/79829489

老头儿ii的博客 341

Android开发之MVP模式学习总结

前言:当我第一次看MVP时,我第一想到了是游戏里面的那个MVP(最佳选手),后来通过度娘我才明白其实前面的MVP是安卓开发的一种模式,是Model(模型)View(视图)Presenter(协调者)的简写。学完MVP之后给我的最大感受就是:在生活中会有各种各样的活动举行,这些活动里的基础业务可能是一样的,MVP模式就是将两者分离,提高他们的独立性、代码利用率,使代码更加有条理。 MVP图解: MVP工作流程: Presenter从View层拿到用户交互后产生的参数,然后将这些参数传递给Mod...

qq_18401643的博客 496

关于学习MVP模式的心得

View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会...

chenjingz148419的专栏 189

学习和认识mvp模式

MVP流程 说明: 步骤1:UI实现View方法,引用Presenter 步骤2:Presenter调用Model,走Model具体逻辑 步骤3:Model逻辑实现,回调Presenter方法 步骤4:Presenter回调View,即回到UI,回调View方法 MVC模式 视图(View):用户界面。 控制器(Controller):业务逻辑 模型(

Strive 436

MVP模式 学习笔记

MVP(Model-View-Presenter)模式: Model: 数据层,提供数据,负责与网络层和数据库层的逻辑交互. View: UI层,负责显示数据, 并向Presenter报告用户行为. Presenter: 逻辑处理层,从Model拿数据, 应用到UI层, 管理UI的状态, 决定要显示什么, 响应用户的行为. 1. 主要优势 耦合降低, Presenter变为纯Java的代码逻辑...

lyl0530的博客 321
下一篇: EventBus学习笔记-什么是EventBus
下沉的代码
博客等级 码龄12年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值