前言
今天有时间就刚好有想写关于这几个名词。对于我来说。事实上这么多名词、思想归根究竟就是要依据项目实际、人员配置来做合理优化,既不能纸上谈兵、又不能畏惧不前。那么合理分阶段架构和完好代码才是关键,本篇文章将以两个思路讲述,第一先说介绍,然后再说优缺点,结合实际开发。
一、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介绍
一个ViewModel接口提供了两个东西:
六、MVVM优缺点
ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel间没有了MVP的界面接口,而是直接
交互。用数据“绑定”的形式让数据更新的事件不须要开发者手动去编写特殊用例,而是自己主动地双向同步。数据绑定你能够
觉得是Observer模式或者是Publish/Subscribe模式,原理都是为了用一种统一的集中的方式实现频繁须要被实现的数据更新
问题。比起MVP。MVVM不仅简化了业务与界面的依赖关系,还优化了数据频繁更新的解决方式,甚至能够说提供了一种有
效的解决模式。
MVVM是数据模型绑定视图方式,降低代码、降低了数据更新,但假设是负责业务逻辑或者是高频发业务改动,对于代码理
解会有所降低。而且要使用第三方架构。这个是我最不喜欢的一点。