MVC和MVP

JavaSwing_4.2: JDialog、JOptionPane(对话框) JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。 阅读详情

MVC和MVP到底有什么区别呢?

从这幅图可以看到,我们可以看到在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。

在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。 

所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

Visual Studio等快速开发工具,让我们很难把View和Controller分开,我们总是直接在View的事件响应函数里完成了Controller的代码。而在ASP.NET和XAML里,使用了一种叫做Code-Behind的技术,可以把View和Controller进行分离。这样,View就可以完全由UI设计工程师来完成,而Controller由程序员来完成,两者可以直接合成不需要像现在一样再由程序员做很多的工作。 

把Controller和View混在一起,有什么问题?

1.难以测试。

  必须手动点击,使用各种自动化的测试工具。

2.代码难以重用。

  UI是很难重用,因为要求总是不同。所以,导致重复的代码四处都是,维护麻烦。

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很大的不同之处。

参考:

PCL RANSAC拟合分割圆柱体模型【2026最新版】 使用RANSAC拟合分割圆柱的原理介绍、官网示例代码实现以及一个可视化拟合出来的圆柱的具体应用案例。博客长期更新,最近一次更新时间为:2026年1月28日。 阅读详情

相关推荐

VOSviewer文献可视化006:修改节点标签文字

由VOSviewer软件生成的可视化图形所显示的文字是小写的,有时候,我们希望其所显示的数据(如国家或作者的首字母等)能够以大写的方式呈现,这时可以进行对节点标签文字的修改操作,使图形显示我们想要的一个效果。

qq_41725964的博客 6150

1.Vue概念

文章目录前端开发发展历程前端开发框架变迁MVCMVPMVVM实例相关资料 前端开发发展历程 原生js(浏览器兼容性差) Jquery等(浏览器兼容性好,频繁操作dom) 前端模板引擎(省去频繁dom操作。处理数据死板,数量大时效率低) Angular.js、vue.js(不用频繁操作dom,数据处理灵活) 前端开发框架变迁 MVC MVC模式最初生根于服务器端的Web开发,后来渐渐能够胜任客户端Web开发,能够满足其复杂性和丰富性。 MVC是Model-View-Controller的缩写,它将应用程

高新园养鸡场 652

ArcGIS标注(二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…)

ArcGIS中的各种标注方法、可能遇到的问题和细节。

m0_73306837的博客 5263

MVP和MVC的区别

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

xxdw1992的博客 5339

基于OkHttp3+Retrofit2+RxJava3搭建响应式网络框架

本文介绍了一个基于OkHttp3+Retrofit3+RxJava3的响应式网络框架设计。该框架采用分层架构,OkHttp3负责底层网络请求,Retrofit3封装HTTP接口,RxJava3实现响应式流处理。核心亮点包括:1)高度解耦的分层设计;2)统一的异常处理和响应体封装;3)RxJava3实现线程切换和请求管理;4)MVVM架构适配,业务层只需关注数据逻辑。框架提供了完整的实现方案,包括全局配置、拦截器、响应转换、接口声明、仓库封装等组件,并支持生产环境扩展功能如Cookie持久化、Token刷新等

fuge2008的博客 870

二、ROS2完成Docker容器和宿主机通信,使用ros2 topic list看到,但是无法echo

如果容器和主机权限不一致,则会导致无法通信(我的代码中,docker容器是root,宿主机是普通用户),虽然可以查询到相关话题,但是订阅后没有消息输出。比如,docker容器创建了一个共享内存,其所有者为docker容器用户root,当宿主机去访问的时候,由于用户不同,没有权限访问,也就无法进行信息传递。该方法只是临时修改共享内存的权限,每次运行完,需要重新运行上述命令,才可以进行通信。在运行的过程中,ROS2使用了共享内存机制,会共享内存。运行之后,宿主机和容器可能用户名不同,这是因为。

qq_43280851的博客 1265

MVVM、MVC、MVP 的区别

MVC:适用于传统的Web应用,尤其是服务器端渲染的应用。它通过控制器协调模型和视图之间的交互。 MVP:适用于需要高度测试性的应用,特别是移动应用。它通过Presenter来分离视图和业务逻辑。 MVVM:适用于现代的单页应用(SPA),特别是使用JavaScript框架如Vue、Angular或React构建的应用。它通过数据绑定简化了视图和模型之间的同步。

小赵的博客 4181

Tiff、jpg图片怎么样添加地理坐标信息

Tiff、jpg图片怎么样添加地理坐标信息 一般,外业调查只有地图资料,如专题图、或者地形图,如何把这些地图资料的扫描地图带上坐标信息,从而内业实现信息化处理?以上问题,可以解决,但根据不同情况有不同的处理方法。     第一种,上面有经纬度外框,图片是矩形,但是没有地理信息。 通过图框的两个角的坐标确定范围,分别是左上(140°E,30°N);右下(150°W,30°N) 解决方

树木_xzw的博客 2万+

iOS——MVC、MVP、MVVM

MVC模式是将应用程序分成三个部分的一种架构模式,一般分为:Model(模型),View(视图),Controller(控制器)。三者关系如图:MVC的优缺点:优点:能提高开发效率,减少冗余代码缺点:会出现大量代码堆积在ViewController中对Model层的误解、误用:很多人把Model理解成只是单独的数据模型,比如上面示例中只定义了几个字段,但Model层正确定义是业务模型层,就是所有业务数据以及数据逻辑都应该在Model层中。

qq_74177011的博客 1959

设计的多实例引用(Multiple Instances of a Design Reference)

一、什么是“设计的多实例引用” 在层次化的设计中,我们经常会将一个module例化多份,这些例化的instance就是设计的module的多实例引用。 二、为什么要解决多实例引用 三、怎么解决多实例引用 ...

kevindas的博客 3719

Android Qcom USB Driver学习(五)

在前面的第二期中,我们知道一些非标的USB的充电类型Floatingcharger,其具有和普通DCP相似的大电流能力,但在最初检测的时候会限制Inputcurrentlimit到100mA,来进行检测是否是SDP类型,所以要支持大电流输入就需要进行vote操作,前面的几篇都有涉及,所以本文学习一下pmicusbcharger都相关的vote机制。...

Android驱动开发 2900

MVC与MVP的区别

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

shaoNianABin123的博客 4537

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4722

MVVM、MVP、MVC

MVVM、MVP、MVC的三大核心部分、核心机制、工作流程以及优势

2201_75883040的博客 1483

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MVC、MVP、MVVM

MVCMVPMVVM不同于设计模式(),只是为了解决一类问题而总结出的抽象方法,一种架构模式往往使用了多种设计模式。MVPMVVMModelView。

xingyu19911016的博客 3838

Statistics and Machine Learning Toolbox

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

【Android】浅析MVC与MVP

架构(Architecture)在软件开发中指的是软件系统的整体设计和结构,它描述了系统的高层组织方式,包括系统中各个组件之间的关系、依赖、交互方式,以及这些组件如何协同工作来完成系统的功能。组件的划分:将系统拆分成模块、类、服务等单元。组件间的交互:不同模块、组件如何传递信息、调用服务等。数据流:数据如何在系统中流动,从输入到输出的路径是什么。非功能性需求:如何考虑系统的性能、可扩展性、安全性、可维护性等。

2301_79344902的博客 1819

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MVC、MVP和MVVM模式

负责存储和管理数据。负责显示数据。负责处理用户输入并更新模型,然后通知视图更新显示。

和风化雨 864

MVC和MVP的区别

前言 各位老铁,历时20天我又回来了。时间嗖嗖就到年底了,才发现自己年初的计划还没开始,所以这一段时间都在专心研究后端的技术。刚开始接触MVC和MVP的时候,一直都有一个疑问,他俩到底有什么区别呢,面试的时候也经常被问到这个问题。我们都知道后端主要使用MVC,因为平台的特殊性,Android根据MVC模式演变出MVP模式,广泛的使用在开发中。 现在让我们怎么思考一下,为什么在Android平台演变出MVP模式? 本文参考了以下两篇博客,大家可以去阅读原文: 两张图看懂Android开发中MVC与MV

u010227042的博客 329

我对MVC和MVP的一些理解

我对MVC和MVP的一些理解MVCMVC是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示. 比如当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。那具体到Android上是怎么样一个

Z.Chu的博客 3579

MVP与MVC的区别

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

qq_45029735的博客 3331

MVC,MVP,MVVM是什么?

文章目录前言一、MVC是什么?二、MVP是什么?三、MVVM是什么?总结 前言 MVC,MVP,MVVP它们本质上是就是三种逐渐迭代的分离界面和业务逻辑的设计模式。其迭代过程由MVC->MVP->MVVM 提示:以下是本篇文章正文内容,下面案例可供参考 一、MVC是什么? MVC是Model-View-Controller简称,它首次把系统分成Model,View和Controller这三部分,明确的把用户界面和业务逻辑分离开来。 M(Model):这里的Model就是业务逻辑的抽象

Dr_chaser的博客 1411

MVC模式和MVP模式的区别

1. MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。 1. MVC 编程模式 MVC 是一种使用 MVC(Model View Controller 模型-

m0_45217404的博客 872

MVC、MVP、MVVM的区别以及联系

MVC模式将程序分为三个部分:模型(Model)、视图(View)、控制器(ControllerModelViewControllerModelViewViewModelViewMVCControllerModelViewM——模型层(Model)负责处理数据的加载或者存储V——视图层(View)负责界面数据的展示,与用户进行交互C——控制器层(Controller)负责逻辑业务的处理:用户操作触发Controller,随后Controller调用Model处理数据,Model更新后通知View刷新。

2302_79323248的博客 1059
上一篇: 深入分析 Linux 内核链表
下一篇: 从三层架构到MVC,MVP
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值