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