MVC

MVC 其实是 Android 默认的设计,MVC 里将代码分为三个部分:

MVC 初步解决了 Activity 代码太多的问题,但也有缺点:

MVP

为了将 Android Component (Activity / Fragment / View) 中的业务逻辑彻底分离出来,业界提出了 MVP 的设计。MVP 同样将代码划分为三个部分:

在实现细节上,View 和 Presenter 中间会定义一个协议接口 Contract,这个接口会约定 View 如何向 Presenter 发指令和 Presenter 如何 Callback 给 View。这样的架构里 Activity 不再有表现逻辑的部分,Activity 作为 View 的角色只处理和 UI 有关的事情。但还是存在一些缺点:

MVVM

MVVM 模式改动在于 Presenter 改为 ViewModel,MVVM 同样将代码划分为三个部分: