mvp模式

MVC, MVP, MVVM总结——MVC篇

前提是你 提交于 2020-01-04 00:18:14
1. 这些模式诞生的源需求 程序的最原始的内容就是数据. 围绕着数据的产生、修改等变化,出现了业务逻辑, 围绕着数据的显示,出现了不同的界面技术. 没有设计的代码,会出现数据层(持久层)和业务逻辑层还有界面代码耦合的情况。 ORM解决业务逻辑和数据之间的耦合。 MVC, MVP, MMVM用来解决业务逻辑和视图之间的耦合 2. 经典的MVC模式 Model: 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。Model有对数据直接访问的权力,例如对数据库的访问。 模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。 View: 视图层能够实现数据有目的的显示(理论上,这不是必需的)。 在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。 Controller: 控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。 3. 真实在Web中使用的MVC 上面是Structs中的MVC的一个请求的流程, asp.net中的MVC应该类似。 Web应用中的MVC架构与通常所说的MVC架构有一点区别。 主要区别在于:

Android开发中的MVP模式详解

守給你的承諾、 提交于 2019-12-23 10:21:02
Android开发中的MVP模式详解 MVC、MVP、MVVM介绍 在 Android 开发中,如果不注重架构的话, Activity 类就会变得愈发庞大。这是因为在 Android 开发中 View 和其他的线程可以共存于 Activity 内。那最大的问题是什么呢? 其实就是 Activity 中同时存在业务逻辑和 UI 逻辑。这导致增加了单元测试和维护的成本。 这就是为什么要清晰架构的原因之一。不仅是因为 Activity 类变得臃肿,也是其他的一些问题,例如 Activity 和 Fragment 相结合时的生命周期、数据绑定等等。 MVP简介 MVP(Model,View,Presenter) View :负责处理用户时间和视图展现。在 Android 中就可能是 Activity 或者 Fragment 。 Model : 负责数据访问。数据可以是从接口或者本地数据库中获取。 Presenter : 负责连接 View 和 Model 。 用一句话来说: MVP 其实就是面向接口编程, V 实现接口, P 使用接口。 清晰的架构: 举个栗子: 在 Android Studio 中新建一个 Activity ,系统提供了 LoginActivity ,直接用它是极好的。 不得不说, Material Design 的效果真是美美哒! 好,那我们就用用户登录页来按照 MVP

MVC,MVP,MVVM

蹲街弑〆低调 提交于 2019-12-16 20:44:24
MVC模式: MVC即Model-VIew-Controller。他是1970年代被引入到软件设计大众的。MVC模式致力于关注点的切分,这意味着model和controller的逻辑是不与用户界面(View)挂钩的。因此,维护和 测试 程序变得更加简单容易。 MVC设计模式将应用程序分离为3个主要的方面:Model,View和Controller 01.Model Model代表了描述业务路逻辑,业务模型、数据操作、数据模型的一系列类的集合。这层也定义了数据修改和操作的业务规则。 02.View View代表了UI组件,像CSS, jQuery ,html等。他只负责展示从controller接收到的数据。也就是把model转化成UI。 03.Controller Controll负责处理流入的请求。它通过View来接受用户的输入,之后利用Model来处理用户的数据,最后把结果返回给View。Controll就是View和Model之间的一个协调者。 今天,这个设计模式被很多热门框架所使用,比如Ruby on Rails, spring Framework,Apple iOS Development and ASP .NET MVC。 MVP模式: 这个模式把Presenter换成Controller就非常和MVC相像了。这个设计模式把应用程序分成了3个主要方面:Model

mvc与mvp与mvvm

房东的猫 提交于 2019-12-16 18:05:05
==MVC,MVP和MVVM都是常见的软件架构设计模式,它通过分离关注点来改进代码的组织方式== MVC、MVP和MVVM的相同点和不同点 不同部分是C(Controller)、P(Presenter)、VM(View-Model),而相同的部分则是MV(Model-View) Model层用于封装和应用程序的业务逻辑相关的数据以及对数据的处理方法 View作为视图层,主要负责数据的展示 MVC 实线代表方法调用,虚线代表事件通知。 View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 用户的对View操作以后,View捕获到这个操作,会把处理的权利交移给Controller(Pass calls);Controller会对来自View数据进行预处理、决定调用哪个Model的接口;然后由Model执行相关的业务逻辑;当Model变更了以后,会通过观察者模式(Observer Pattern)通知View;View通过观察者模式收到Model变更的消息以后,会向Model请求最新的数据,然后重新更新界面 其中涉及两种设计模式: view和model之间的观察者模式,view观察model,事先在此model上注册,以便view可以了解在数据model上发生的改变。

Android MVP-编程思想1(什么是MVC-MVP-MVVM模式?)

帅比萌擦擦* 提交于 2019-12-16 03:39:13
前言 通过一个小的登录功能模块案例,帮助大家了解MVP。最终实现一个结合Rxjava2,Retrofit 的MVP通用框架。代码放到 github 上。 (如有错误之处,请在评论区指出,谢谢。如果感觉写的不错,请点赞,关注,谢谢。) 目录: Android MVP-编程思想1(什么是MVC-MVP-MVVM模式?) Android MVP-编程思想2(代码实现初级版) Android MVP-编程思想3(内存泄露问题处理,基类封装,有没有必要再使用软引用?) Android MVP-编程思想4(AOP思想-动态代理运用,反射创建M层实例对象) Android MVP-编程思想5(如何处理多个P层的问题?) Android MVP-编程思想6(依赖注入多个P层优化—注解,反射) Android MVP-编程思想7(为什么使用代理类抽取通用方法而不是工具类?,基类BaseMvpFragment) 未完待续-------- Android MVP-编程思想8(集成Rxjava2,Retrofit) 先讲一下mvc M-数据层:数据库,网络数据 V-视图层:layout,自定义view C-控制层: 一般是Acitivity,Fragment(处理业务逻辑) 实际上在MVC在andorid开发中很难区分Activity到底应该处于V还是C的角色

聊聊MVC、MVP、MVVM吧

筅森魡賤 提交于 2019-12-14 10:39:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 先来介绍下本文结构: 三种框架的具体概念 在安卓开发上的写法、优缺点 1.概念 1.1 MVC MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),以便于程序的分层开发。 MVC模式最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。——维基百科 Model(模型) - 定义用户界面所需要被显示的数据模型以及这个数据模型包含着相关的业务逻辑。 View(视图) - 呈现给用户的终端界面,主要用于模型中数据的可视化。 Controller(控制器) - 作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。 图中的两种虚线其实分别对应着Android开发过程中的MVC模式2中写法,接下来会详细介绍。 1.2 MVP MVP模式(Model-view-presenter)可以说是MVC模式的一种变种。在MVP模式中,为了让UI层能够从逻辑层上分离下来,在UI层与逻辑层之间加了一层 Presenter

Android MVP模式浅谈

自闭症网瘾萝莉.ら 提交于 2019-12-12 15:49:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Model – 为UI层提供的数据,或者保存UI层传下来的数据 View – 单纯的展示数据,响应用户操作并都转发给Presenter来做具体的处理 Presenter – 逻辑控制层,从Model处取数据,运算和转化,最后用View来展示;并处理View传过来的用户事件,并做处理 需要注意的是MVP仅用于应用中的GUI部分,它并不是整个应用的架构方式。一个应用的主要的架构应该包括基础组件,业务逻辑层和GUI展示层,而MVP仅是用于展示层的设计模式。另外,它是一个方法论的东西,没有固定的实现方式,只要能体现出它的方法就可以算是MVP。 MVP与 MVC 的区别 MVC之中逻辑是放在了Model里,Controller负责桥接View和Model,View发生变化时通知Controller,Controller再通知Model,Model进行逻辑处理,更新数据,然后通知View来刷新。可以看到MVC中三者之间都有联系,如果处理不好,或者当View比较复杂时,三者之间都会双向关联。MVC在命令行应用,以及WEB中有大量的应用,但对于客户端(PC和移动端)的GUI应用,MVC往往解决不了复杂性,移植性上以及可测试性上也没有优势。 MVP的改进在于: 逻辑放在Presenter中 View和Model抽象成为接口

MVC与MVVM的理解

拜拜、爱过 提交于 2019-12-10 13:06:45
MVC,MVP,MVVM是三种常见的前端架构模式,通过分离关注点来改进代码组织方式。MVC模式是MVP,MVVM模式的基础,这两种模式更像是MVC模式的优化改良版,他们三个的MV即Model,view都是相同的,不同的是MV之间的桥梁连接部分。 本文是对 https://www.kancloud.cn/lixianshengdezhanghao/interview/904696 的一个总结。 一、MVC 视图(View):用户界面,只负责渲染 HTML 控制器(Controller):业务逻辑,负责调度 model 和 view 模型(Model):数据保存,只负责存储数据、请求数据、更新数据 MVC允许在不改变视图的情况下改变视图对用户输入的响应方式,用户对View的操作交给了Controller处理,在Controller中响应View的事件调用Model的接口对数据进行操作,一旦Model发生变化便通知相关视图View进行更新。 接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受输入,传递给 Controller。另一种是直接通过controller接受指令。此处只画了第一种情况。 二、MVP MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。 与MVC最大的区别就是View和Model层完全解耦,不在有依赖关系

界面之下:还原真实的 MVC、MVP、MVVM 模式

∥☆過路亽.° 提交于 2019-12-09 13:29:47
前言 做客户端开发、前端开发对MVC、MVP、MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式。网上很多文章关于这方面的讨论比较杂乱,各种MV*模式之间的区别分不清,甚至有些描述都是错误的。本文追根溯源,从最经典的Smalltalk-80 MVC模式开始逐步还原图形界面之下最真实的MV*模式。 GUI程序所面临的问题 图形界面的应用程序提供给用户可视化的操作界面,这个界面提供给数据和信息。用户输入行为(键盘,鼠标等)会执行一些业务逻辑,可能会导致对应用程序数据的变更,数据的变更自然需要用户界面的同步变更以提供最准确的信息。例如用户对一个电子表格重新排序的操作,应用程序需要响应用户操作,对数据进行排序,然后需要同步到界面上。 在开发应用程序的时候,以求更好的管理应用程序的复杂性,基于职责分离(Speration of Duties)的思想都会对应用程序进行分层。在开发图形界面应用程序的时候,会把管理用户界面的层次称为View,应用程序的数据为Model(注意这里的Model指的是Domain Model,这个应用程序对需要解决的问题的数据抽象,不包含应用的状态,可以简单理解为对象)。Model层对应用程序的业务逻辑无知,只保存数据结构和提供数据操作的接口。 有了View和Model的分层,那么就有了两个问题: 响应用户操作的业务逻辑

MVP模式与MVC模式(转)

烈酒焚心 提交于 2019-12-07 21:01:16
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。Alex在他的blog中对于这两者之间的比较很直观也比较清楚,原文可以下面的地址找到: http://ameleta.spaces.live.com/blog/cns!5F6316345A821420!163.entry 【译文】: Model View Presenter vs Model View Controller 简介 在我工作中经常需要处理一些由于开发人员没能很清楚地理解MVC和MVP模式的区别的情况下使用它们而产生的问题。在这篇文章中我将会阐述一下我对两者之间区别的一些理解。 在N层体系结构中MVC/P模式仅仅只是用于表示层(presentation layer),理解这一点很重要。这两个模式并不是关于怎么构建数据层(data layer)和服务层(service layer)的,而是关于怎么将数据(data