mvc,mvp其实是复合模式,是多个设计模式的组合:将多个模式结合起来形成一个框架,已解决一般性问题。

mvc:

既然mvc是复合模式,那么是由哪些设计模式组合的呢?

  1. 观察者设计模式:view和controller都是model的观察者(model的状态更新及时通知view更新,或者通知c做相应逻辑处理);
  2. 策略模式:controller是view的策略,所以view包含的控制逻辑就是选择策略,也就是选择控制器controller.
  3. 组合模式:view的自身实现应用了组合模式。

耦合性比较高,view model controller都可以相互访问。

model view controller 模式 视图 控制器。

在android中

  1. view 对应于 视图布局xml文件;
  2. model 对应于数据文件或者网络获取的数据体,业务逻辑,数据处理;
  3. controller 对应activity,fragment。

activity(controller)中获取数据(model)并将数据展示在view上面去。

activity将view和model进行分离,在activity中进行绑定和完成逻辑。

mvc的优缺点:

优点:

  1. 分工明确,使用mvc可以把数据库开发,程序业务逻辑开发,页面开发分开,每层具有相同特征,方便代码维护
  2. 松耦合,视图层,业务层分离,这样修改视图层(view),不用编译模型(model)和控制器(contorller)代码。业务流程规则改变修改模型层(model)。
  3. 可重用性强,多个view可以公用同一套model。

缺点:

view和model耦合相对较高,view可以直接访问model,view就会包含model信息,业务逻辑就会在view里面实现,更改view就比较困难,业务逻辑无法重用。

mvp:

m和v直接必须通过p才能访问,m和v不能直接进行交互。

model(数据层): 数据获取 对数据进行存储 获取(数据库操作,网络请求操作)

view(UI层) :activity,fragment 或者view,包含presenter成员变量,实现p的抽象接口,将对view上的业务逻辑放到p上实现,p调用view的逻辑将结果进行展示到view上。

presenter(业务逻辑层):用来解耦model和view。

mvp有效降低view的复杂度,避免大量业务逻辑放在view上面,解除view和model的耦合,可扩展,可测试,保证系统整洁,灵活。view层不能和model层直接交互,必须经过p层来进行中转。也就是说数据和视图的逻辑控制都放在p层。

目标:一套逻辑适用不同UI。

mvp优缺点:

优点:

  1. model与view完全分离,我们可以修改view而不影响model,也就是解耦合;
  2. 交互逻辑主要是在presenter里面进行;
  3. presenter中的逻辑可以适用于多个view里面,无需修改p里面的代码;
  4. 有利于单元测试。

缺点:

  1. 定义大量的接口;
  2. view和presenter的交互过于紧密,view更新,presenter需要更新。

mvc架构和mvp架构的更多相关文章

  1. MVC 与 MVP 架构 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. MVP架构。。。。

    Model-View-Presenter(MVP)概述    MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成 ...

  3. 转:Android开发中的MVP架构(最后链接资源不错)

    Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...

  4. 转: Android开发中的MVP架构详解(附加链接比较不错)

    转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...

  5. 浅谈Android架构之MVP,MVVM

    概述 MVP(Model-View-Presenter)是传统MVC(Model-View-Controller)在Android开发上的一种变种.进化模式.主要用来隔离UI.UI逻辑和业务逻辑.数据 ...

  6. 设计模式笔记之二:Android开发中的MVP架构(转)

    写在前面,本博客来源于公众号文章:http://mp.weixin.qq.com/s?__biz=MzA3MDMyMjkzNg==&mid=402435540&idx=1&sn ...

  7. mvp架构解析

    MVP现在已经是目前最火的架构,很多的框架都是以MVP为基础,甚至于Google自己都出一个MVP的开源架构.https://github.com/googlesamples/android-arch ...

  8. 用户登录(Material Design + Data-Binding + MVP架构模式)实现

    转载请注明出处: http://www.cnblogs.com/cnwutianhao/p/6772759.html MVP架构模式 大家都不陌生,Google 也给出过相应的参考 Sample, 但 ...

  9. MVP架构

    一.介绍 MVP(Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的.对于在Android应用中开发就可以视为是MVC架构,布局 ...

随机推荐

  1. 《Visual Studio Magazine》2013年读者选择奖—界面框架类

    好消息!2013 Visual Studio Magazine读者选择奖已经正式揭晓了!据了解,截至今年此奖项已经评选了21次,非常值得.NET开发人员信赖和参考.此次评选共有400多个产品角逐28个 ...

  2. 实例学习SSIS(五)--理论介绍SSIS

    原文:实例学习SSIS(五)--理论介绍SSIS 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS( ...

  3. Android-往来:包Group添加到联系人

    long groupId = Constant.createGroupId; ContentValues values = new ContentValues(); for(int i=0,len=C ...

  4. form-validation--表单验证插件

    基于jquery的validationEngine表单验证插件,根据官网提示,该插件支持IE6-8,Chrome浏览器,火狐,Safari,Opera 10,但由于有使用到了css3的阴影和圆角样式, ...

  5. switch与java,c#的异同

    <script type="text/javascript" language="javascript"> //JavaScript控制语句基本和以 ...

  6. [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人

    不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小   15天学会jQuery(完整版).pdf 274.79 KB   21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...

  7. 持续集成 windows下jenkins常见问题填坑

    [过程改进]持续集成 windows下jenkins常见问题填坑 没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑. 目录 1. 主从节 ...

  8. 1关于script标签属性,注意点,浏览器文档模式,各种数据类型的转化

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 字符串处理:kmp算法

    刷vj的时候遇到一个kmp算法,就学习了一下 看了某位大神的清楚解释略有领会 看了一遍之后,可以清楚的知道 void kmp 的模拟过程,就是j指针的运动情况 但是j指针的运动是如何具体的实现,这其实 ...

  10. mongo查询某个字段是否存在,并删除记录里的这个字段

    查询course表中,存在lectures_count字段的记录信息 db.course.find( { "lectures.lectures_count": { $exists: ...