「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的压力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。