「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层。


MVP

M、V层还是有互相穿插、隔离度不够,同时写到Activity上使得Activity代码臃肿,于是呈现了MVP: 隔离了MVC中的 M 与 V 的间接分割,将M、V层更加隔离开来,并开释了Activity的压力。


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交互。

MVVM

为了更加拆散M、V层,更加开释Activity的压力,于是呈现了MVVM: 使得V和M层之间的耦合水平进一步升高,拆散更为彻底,同时更加加重了Activity的压力。