「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的压力。