MVC、MVP、MVVM框架简析

来源:互联网 发布:弗洛伊德算法流程图 编辑:程序博客网 时间:2024/05/02 03:03

Android框架简析

Android目前出现了多种框架,相比于之前所用的MVC设计,开始出现了MVP框架、MVVM框架,这些框架的出现为项目搭建提供了更多的选择,而这些框架也同时存在自己的优缺点,提供给我们选择。

关于框架问题涉及的知识并不少,单单一篇博客不可能讲的清楚,这一篇博客只是做一个简单的分析,对于各个框架的详细解析可能会在之后再做一些探讨。

    • Android框架简析
      • MVC
      • MVP
      • MVVM


MVC

1.整体描述

MVC可以算的上经典的框架,框架基本的框架就是Model-View-Control(模型-视图-控制),应用在Android中也就是(对象-控件-控制器),一般来说在项目不算庞大,需求更改不频繁的情况下,MVC的框架设计是较为合适的。

2.设计方式

针对Android来说,框架的基本模式将项目内的元素大致分为三部分,分别是模型部分(Object)、视图部分(xml、Widget)、控制器(一般是activity及 fragment)。

这里写图片描述

通过xml完成页面显示,内部包含控件部分。封装Object,作为View中需要显示数据的载体,编写Control用于处理Object中的数据并将数据显示在View中。View与Model之间也能够实现交互。

3.框架总结

MVC模式应该是众多开发者最先接触的框架设计,这个框架的分层理解方便,可以说是开发初期较为合适的框架。MVC框架在一定程度上确实降低了项目的耦合性,对项目进行了分层切割,这是MVC的优点;但是注意到MVC的Control层,在这一框架下需要在Activity或是Fragment中处理太多逻辑,View与Model之间的交互都是在其中完成的,很大程度上让View变得有些臃肿,这也就是MVC的缺点体现。

MVP

1.整体描述

MVP是MVC的变形体,在MVC的基础上做出了一些改变,MVP指的是Model-View-Presenter(模型-视图-呈现),关于Presenter的翻译目前我是这样理解的,如果有更好的诠释欢迎指正。和MVC结构不同,MVP的分层方式阻断了Model与View之间的直接交互,并且使用了Presenter来替代了Control。

2.设计方式

MVP的设计和MVC的设计有相似的部分,也就是View层的实现,两种设计模式在这一部分上是一致的。不同的点在于:View层与Presenter的交互,Model与Presenter的交互
整体关系:
这里写图片描述

整个MVP框架中最多的就是接口,逻辑越复杂接口就越多,而这些接口则将使用在View与Presenter之间交互上。

  • Model:
    该层大致可分为3部分。
    第一部分是Model的本体,也就是对应的Object;
    第二部分是接口,用于定义Object所涉及的逻辑;
    第三部分是接口实现,获取Object实例,完成逻辑,设置回调用于与Presenter的交互。

  • View:
    该层大致可分为2部分。
    第一部分是接口,定义设定View变化的方法;
    第二部分是实现接口的Activity,使用Presenter的实例实现与Model的交互。

  • Presenter:
    该层用于处理View与Model的交互,由Presenter作为中间承接。在Presenter中使用Model层中的实现类

3.框架总结

MVP框架去除了Control层,使用Presenter替代,关键的点在于隔绝了Model和View之间的交互,通过这一部分的改变也就解决了View中代码量过多的问题。由Presenter作为两个层之间的连接,通过定义接口完成交互。这一框架设计的弊端就是Model的操作需求增多的同时会增多接口的定义,使得接口出现复杂冗余的情况。

MVVM

1.整体描述

MVVM框架在MVP的基础上又做了部分改变,而它指的就是(Model-VIew-ViewModel),当第一次看到MVVM框架名称是可能会以为这是四层的框架,事实上这是三层的,而这一框架加入了一个binding的概念,这就是MVVM框架在MVP框架基础上最大的变化。

2.设计方式
MVVM框架由MVC框架演变而来,整体结构上变化不大,使用ViewModel替换了Presenter层,并且在View层与ViewModel层之间添加了binding。

  • View
    基本还是由xml和activity完成。

  • Model
    一系列对数据操作的内容。

  • ViewModel
    继承BaseObservable的domain操作类,能够实现与View之间的binding。

这里写图片描述

3.框架总结
MVVM这一框架更多的是在MVC框架上做的改动,View和Model之间通过binding与ViewModel也就能够交互,这又在一定程度上加大了Activity中的代码量。当然在xml中view的操作可以避免防止在Acitivity中了。而Dialog一类的view依然需要在Acitivity中出现并处理。

到这里,关于这三个框架的简单介绍就到这里了。这篇文章里提到的内容都是最简单的介绍和概括,关于各个框架的具体解析我会尽快做出来。按照我咸鱼的本质,估计在下月前可以完成全部三个框架的文章。

0 0
原创粉丝点击