类型

MVC MVP MVVM MVI

(先后循序)

MVC

Model:数据类型和堆数据类型的操作:增删改查

View:视图,展示数据和接受用户交互

Controller:Model和View的连接器。接受View的要求转交给Model去处理。

优点:为了让业务(Model)和视图(View)代码分离,实现解耦。

缺点:

  1. Model和View是可以直接通信的
  2. Controler太臃肿

MVP

Presenter代替了Controller

MVC是View和Model直接通信

MVP是让P在中间双向同心,这样MV就不需要接触。

全部给P中转。

优点:

  1. 解决MVC的C太臃肿
  2. M和V不直接通信,进一步降低耦合

MVVM

把P换成了ViewModel

采用数据绑定

View的变动自动反应再ViewModel上。

单项绑定:只有VM变了,View才变

双向绑定:V和VM同步

优点:

  1. 通过数据绑定简化代码,无需手动同步View和Model之间的数据
  2. 提高效率,降低出错率
  3. View和ViewModel直接通信自动,降低耦合度提高代码可维护性和可测试性

MVI

将app状态管理集中再Intent中

View发出意图,意图转为状态存在Model中。

然后Model将心状态推送回View来更新用户界面。