根据我的理解,画了个图

这次又看了下 较复杂点的例子。

往往一个项目有多个部份,我们可以按功能分成几个activity, 每个activity有自己的view和数据model,因此也有自己的逻辑 presenter,, 如果真正能够按照 M V P模式来组建一个工程,那么整个项目思路将会十分清晰,并且每个MVP 三个方面的工作量都会非常少,而且能逻辑清晰地去写代码。

上一篇的解析,逻辑方面应该是正确的,但并非什么数据,都由一个model来存放,不同的数据应该有不同的model,比如学生跟老师,presenter和view接口也一样,不同的作用和不同的实现就有不同的presenter和view,并且可以实现重用,比如研究生和本科生可以用同一个模板presenter,只需将model的数据改变一下而已,这将会减少重复的工作,体现重用的思想。

这次觉得有点乱乱的,不知道要如何表达,也没再学到更多东西了。不过画了个图,以后看到也会更清晰了。。。。下面就借鉴一下别人的总结吧。。。。

在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用!

MVP的优点

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

  MVP的缺点

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

MCP与MVC的不同

http://www.360doc.com/content/12/0405/13/8101845_201083284.shtml

MVP 个人理解2的更多相关文章

  1. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  2. android开发-mvp模式理解

    看之前,先忘掉所有,一步步看就行了. 最后会有一个原型demo,当然是转的了.看完文章,再看demo,然后再回头看文章就很好理解了,最好自己写一遍. 1.mvp开发模式可以理解为页面接口编程,每一层的 ...

  3. MVP -----个人理解与示例(android例子 实现)

    MVP 也就是Model View Presenter模式,是建立一个工程的一种模式. ======================================================== ...

  4. 关于MVC与MVP的理解

    1. MVC的理解误区 理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间的传输数据. 2. 把业务逻辑全部放在Controller端,认为 ...

  5. MVP的理解和使用

    MVP大家应该差不多都知道了,他其实是MVC的升华版,差不多是在view和model中加了一个调节器,这样view不能直接调用model中得数据,而是通过presenter来进行操作,此外Presen ...

  6. 一张图看Google MVP设计架构

    这段时间看了一下Google官方推出的MVP架构案例,决定把对MVP的理解用类图的形式表述一下.MVP架构的设计思想确实非常值得学习,大家如果还不是很了解MVP,建议抽时间去研究研究,相信对大家的架构 ...

  7. Android MVP模式的初识

      MVP是什么?或许在之前更多的人知道的是MVC这个模式(Model View Controller),然而MVP与MVC最不同的一点是M与V是不直接 关联的也是就Model与View不存在直接关系 ...

  8. 【转】MVP和MVC的区别

    转自:http://www.cnblogs.com/end/archive/2011/06/02/2068512.html MVC和MVP到底有什么区别呢? 从这幅图可以看到,我们可以看到在MVC里, ...

  9. 结合实例分析Android MVP的实现

    最近阅读项目的源码,发现项目中有MVP的痕迹,但是自己却不能很好地理解相关的代码实现逻辑.主要原因是自己对于MVP的理解过于概念话,还没有真正操作过.本文打算分析一个MVP的简单实例,帮助自己更好的理 ...

随机推荐

  1. ubuntu 常用命令集合版(一)【大侠勿喷,菜鸟欢迎】(转载)

    1:apt-get:(一般是要加sudo) debian系系统的软件包管理程序(其图形化前端就是大名鼎鼎的新立得了),会自动帮你搞定依赖关系最常用参数:update        —-与你的软件源(在 ...

  2. Spring 计划

    3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保product backlo ...

  3. Ubuntu 安装BCM 43142无线网卡驱动

    ubuntu14.04 安装 bcm43142无线网卡 用命令lspci 查看无线网卡类型 然后下载对应的无线网卡驱动. 之后,使用下列命令安装,即可搜索无线热点了: sudo apt-get ins ...

  4. Android中悬浮窗口

    调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据Wind ...

  5. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  6. [CrunchBang]tint2默认设置

    #--------------------------------------------- # TINT2 CONFIG FILE #-------------------------------- ...

  7. UITableView中Cell和section的插入与删除

    插入段: - (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animati ...

  8. spring多线程与定时任务

    本篇主要描述一下spring的多线程的使用与定时任务的使用. 1.spring多线程任务的使用 spring通过任务执行器TaskExecutor来实现多线程与并发编程.通常使用ThreadPoolT ...

  9. iocp-socket 服务(借鉴别人的,根据自己的需要改的)未完待续

    #pragma once #include <WinSock2.h> #include <MSWSock.h> #include <Windows.h> #prag ...

  10. python(四)函数

    一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 ...