前言

今天有时间就刚好有想写关于这几个名词。对于我来说。事实上这么多名词、思想归根究竟就是要依据项目实际、人员配置来做合理优化,既不能纸上谈兵、又不能畏惧不前。那么合理分阶段架构和完好代码才是关键,本篇文章将以两个思路讲述,第一先说介绍,然后再说优缺点,结合实际开发。

一、MVC介绍

MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器。一个逻辑模型能够对于多种视图

模型,比方一批统计数据你能够分别用柱状图、饼图来表示。一种视图模型也能够对于多种逻辑模型。

使用MVC的

目的是将M和V的实现代码分离。从而使同一个程序能够使用不同的表现形式。而C存在的目的则是确保M和V的同步。

一旦M改变,V应该同步更新。

二、Android中MVC使用

1.视图层(View):一般採用XML文件进行界面的描写叙述,使用的时候能够很方便的引入。当然。怎样你对Android了解的比較的多了话,

就一定能够想到在Android中也能够使用JavaScript+HTML等的方式作为View层,当然这里须要进行Java和JavaScript之间的通信。幸运的是,

Android提供了它们之间很方便的通信实现。     

 2.控制层(Controller):本层应该是跟业务最挂钩的一层。是用户能操作的入口,在android中仅仅有activity。ios中有Controller,

在这边activity中要做的就是业务导向。详细实现模块功能能够封装到model层,长时间操作例如以下载、上传、等都能够放线程或者服务等。

 3.模型层(Model):对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在的该层的。

还有数据模型都能够放在本层。

三、MVC长处

从用户的角度出发,用户能够依据自己的需求。选择自己合适的浏览数据的方式。

比方说,对于一篇在线文档,

用户能够选择以HTML网页的方式阅读,也能够选择以pdf的方式阅读。从开发者的角度,MVC把应用程序的

逻辑层与界面是全然分开的。最大的长处是:界面设计人员能够直接參与到界面开发,程序猿就能够把精力放

在逻辑层上。而不是像曾经那样,设计人员把全部的材料交给开发者,由开发者来实现界面。

在Eclipes工

具中开发Android採用了更加简单的方法,设计人员在DroidDraw中设计界面。以XML方式保存。

在Eclipes中直接打开就能够看到设计人员设计的界面。

四、MVP介绍

MVP作为MVC的演化版本号,那么相似的MVP所相应的意义:M-Model-模型、V-View-视图、P-Presenter-表示器。 

从MVC和MVP两者结合来看,Controlller/Presenter在MVC/MVP中都起着逻辑控制处理的角色。起着控制各业务

流程的作用。


MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之

间间隔着的是Presenter层,其负责调控 View与Model之间的间接交互,MVP的结构图例如以下所看到的,对于这个图理解

就可以而不必限于当中的条条框框,毕竟在不同的场景下多少会有些出入的。在
Android中很重要的一点就是对UI的

操作基本上须要异步进行也就是在MainThread中才干操作UI。所以对View与Model的切断分离是合理的。此外

Presenter与View、Model的交互使用接口定义交互操作能够进一步达到松耦合也能够通过接口更加方便地进行

单元測试。

四、MVP长处缺点

1.长处:
Presenter这一层处理着程序各种逻辑的分发,收到View层UI上的反馈命令、定时命令、系统命令等指令后分发处理

逻辑交由Model层做详细的业务操作。在这里能够看到本身activity要做的事情被抽离出来,降低activity与view的业务

耦合,这样有利于维护、易开发,降低降低activity中代码和业务抽离模块化。

2.缺点
mvp架构会抽离一层、这一层是业务分发,假设项目越来越大、人越来越多。假设业务许多。而且易改动的话,抽

离的一层会变的易读性降低。还有开发团队假设不能坚持,要又一次架构。基本要又一次写一遍,所以要谨慎谨慎。

五、MVVM介绍

MVVM首先是基于mvc演变而来的,讲到这里那么MVVM代表啥里。MVVM模式包括了三个部分:Model
– 代表你的
基本业务逻辑。View
– 显示内容,ViewModel – 将前面两者联系在一起的对象。

一个ViewModel接口提供了两个东西:

动作和数据。动作改变Model的下层(click
listener。监听文字改变的listener等等),而数据则是Model的内容,代表
第三方库:RoboBinding等,github:https://github.com/RoboBinding/AndroidMVVM.

六、MVVM优缺点

1.长处

ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel间没有了MVP的界面接口,而是直接

交互。用数据“绑定”的形式让数据更新的事件不须要开发者手动去编写特殊用例,而是自己主动地双向同步。数据绑定你能够

觉得是Observer模式或者是Publish/Subscribe模式,原理都是为了用一种统一的集中的方式实现频繁须要被实现的数据更新

问题。比起MVP。MVVM不仅简化了业务与界面的依赖关系,还优化了数据频繁更新的解决方式,甚至能够说提供了一种有

效的解决模式。

2.缺点

MVVM是数据模型绑定视图方式,降低代码、降低了数据更新,但假设是负责业务逻辑或者是高频发业务改动,对于代码理

解会有所降低。而且要使用第三方架构。这个是我最不喜欢的一点。

Android中MVC、MVP、MVVM具体解释的更多相关文章

  1. Android App的设计架构:MVC,MVP,MVVM与架构经验谈

    相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...

  2. Android App的设计架构:MVC,MVP,MVVM与架构AAAAA

    1. 架构设计的目的1.1 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.1.2 这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续 ...

  3. android MVC && MVP && MVVM分析和对比

    相关:http://www.cnblogs.com/wytiger/p/5305087.html 出处http://blog.csdn.net/self_study,对技术感兴趣的同鞋加群544645 ...

  4. 浅析前端开发中的 MVC/MVP/MVVM 模式

    MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...

  5. MVC, MVP, MVVM比较以及区别

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  6. 浅谈Android架构之MVP,MVVM

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

  7. 用户界面编程模式 MVC MVP MVVM

    用户界面编程模式 MVC MVP MVVM 程序 = 数据 + 算法 数据:就是待处理的东西 算法:就是代码 涉及到人机交互的程序,不可避免涉及到界面和界面上显示的数据原始方式是界面代码和逻辑代码糅合 ...

  8. MVC, MVP, MVVM比较以及区别(上)

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  9. [转]MVVM架构~mvc,mvp,mvvm大话开篇

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

随机推荐

  1. arcgis python图形信息

    属性 说明 area 面要素的面积值:对于所有其他要素类型为空 centroid 如果质心位于要素之内或要素之上则为真:否则返回标注点(返回一个点对象) 范围 返回一个范围对象 firstPoint ...

  2. ArcGIS For Android ExportTileCache应用

    说明:从ArcGIS For Android10.2.4 ,開始支持下载在线地图服务切片缓存到移动设备本地.以便离线时进行地图浏览.本文章摘要介绍,使用自己公布的服务时,须要注意的内容. 一.首先公布 ...

  3. zend studio配置调试(Xdebug方式)

    1.下载xdebug http://xdebug.org/download.php 我下的是PHP 5.4 VC9 (32 bit) [当前系统php是php5.4.14(win32)版本] 2.配置 ...

  4. Delphi 6 保存窗体设置

    DSK Desktop Setting File 保存工程文件的桌面摆布情况, 下次打开时可以恢复上次保存的桌面状态 Desktop文件.保存了IDE的布局(也可能包含浏览记号,视乎IDE的设定),为 ...

  5. linux开机启动的三种方式

    参考:www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html 一./etc/rc.local 其中的rc.local是在完成所有的系统初始化之后执 ...

  6. 【iOS开发-90】CALayer图层:自己定义图层,图层的一些动画

    (1)效果 (2)代码 http://download.csdn.net/detail/wsb200514/8261547 (3)总结 --能够自己定义图层,尤其须要对图片进行圆角裁剪. --图层的动 ...

  7. iOS:UI简单的总结

    UI简单总结: 一.常用单例: NSBundle *bundel = [NSBundle mainBundle]; //加载资源 NSFileManager *fm = [NSFileManager  ...

  8. iOS:网络编程的第三方框架:AFNetworking、SDWebImage

    网络编程第三方框架:AFNetworking.SDWebImage 介绍:这些框架是开源的,经过前人的封装.改进,成为使用次数很多的一个性能好的源代码框架,只需要将它导入项目中,就可以使用.因此,在做 ...

  9. 浅析GitLab Flow的十一个规则

    使用 Git 版本控制,是对使用它之前的所有版本控制方式的一种改进.然而,很多组织最终以太过混乱或过于复杂的流程来结束.这个问题对于刚从其他版本控制系统转过来的组织来说特别突出. 在本文中我们会列出 ...

  10. UIWebView页面的控制(二)

    1.UIWebView的内容控制的属性/方法列表 loading属性               确认当前页面是否在读入中 canGoForward属性   确认goForward  方法是否可运行, ...