目录
共同点
架构将整个项目分为 三个模块
- 视图层 View :UI界面更新和用户交互响应
- 数据层 Model:数据的获取,处理,存储
- 业务层:在数据层和视图层之间处理业务逻辑
不同点
1、MVC
箭头指向(数据流向)
实际操作解释:
View中调用Controller中的方法,把方法具体操作逻辑交给Controller实现
Controller中调用Model中的方法,把数据传给Model,让Model去处理数据
Model中调用View中的方法,把数据处理结果,由方法调用来更新UI界面
优点
- 结构清晰,职责模块化
- 降低耦合
- 利于组件重用
缺点
三个模块强耦合,不利于业务需求变更和代码维护工作
Activity/Fragment会承担View和Controller两个角色,比较臃肿
2、MVP
箭头指向(数据流向)
View中调用Presenter中方法处理业务逻辑
Model中方法会有返回值
Presenter中调用Model中方法,获取处理后的返回值
调用View中方法,更新UI界面及数据
优点
实现Model和View的解耦
缺点
- 多接口,项目文件数量多
- 代码结构复杂
3、MVVM
箭头指向(数据流向)
View中调用ViewModel中的方法处理业务逻辑
XML文件中将绑定属性用"@={ }"赋值
ViewModel中调用Model中方法,让Model处理数据
Model中方法会有返回值
补充在XML文件中设置
补充在APP模块的gradle文件添加数据双向绑定框架
优点
模块间充分解耦(View和ViewModel也进行了解耦)
缺点
- 代码复杂
- Debug困难