MVC 其实是 Android 默认的设计,MVC 里将代码分为三个部分:
View:Layout XML 文件Model:负责网络请求、数据库操作、文件操作等Controller:Activity / Fragment 负责 UI 操作和业务逻辑MVC 初步解决了 Activity 代码太多的问题,但也有缺点:
为了将 Android Component (Activity / Fragment / View) 中的业务逻辑彻底分离出来,业界提出了 MVP 的设计。MVP 同样将代码划分为三个部分:
Presenter:包含业务逻辑在实现细节上,View 和 Presenter 中间会定义一个协议接口 Contract,这个接口会约定 View 如何向 Presenter 发指令和 Presenter 如何 Callback 给 View。这样的架构里 Activity 不再有表现逻辑的部分,Activity 作为 View 的角色只处理和 UI 有关的事情。但还是存在一些缺点:
双向依赖: View 和 Presenter 是双向依赖的,一旦 View 层做出改变,相应地 Presenter 也需要做出调整。在业务语境下,View 层变化是大概率事件MVVM 模式改动在于 Presenter 改为 ViewModel,MVVM 同样将代码划分为三个部分: