「Android」三大架构设计模式的初步理解

为什么要进行架构设计?

  • 模块化功能

    使得程序模块化,即:内部的高聚合、模块之间的低耦合

  • 提高开发效率

    开发人员只需专注于某一点(视图显示、业务逻辑 / 数据处理)

  • 提高测试效率

    方便后续的测试 & 定位问题

三大主流模式

  • MVC:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
  • MVP:MVC全名是Model View Persenter,MVP由MVC演变而来,是现在主流的开发模式。
  • MVVM:MVVM全名是Model-View-ViewModel,它本质上就是MVC的改进版。

各种模型的主要目的都是是分离视图(View)和模型(Model),即将UI界面显示和业务逻辑进行分离。

MVC

为解决程序模块化问题,MVC模式出现了:将业务逻辑、数据处理与界面显示进行分离来组织代码,即分成M、V、C层。
MVC.png
MVC2.png
MVC3.png

MVP

M、V层还是有相互交叉、隔离度不够,同时写到Activity上使得Activity代码臃肿,于是出现了MVP: 隔离了MVC中的 M 与 V 的直接联系,将M、V层更加隔离开来,并释放了Activity的压力。
MVP.png
MVP2.png
MVP3.png

MVC和MVP的区别

作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
在MVC里,View是可以直接访问Model的。从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的改变,而同时有多个对Model的不同显示,即View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
虽然MVC中的View的确“可以”访问 Model,但是不建议在View中依赖Model,而是要求尽可能把所有业务逻辑都放在Controller中处理,而View只和Controller交互。
MVCMVP.png

MVVM

为了更加分离M、V层,更加释放Activity的压力,于是出现了MVVM: 使得V和M层之间的耦合程度进一步降低,分离更为彻底,同时更加减轻了Activity的压力。
MVVM.png
MVVM2.png


山庄的铁匠
15 声望11 粉丝