Your Site Title

Lang MVC系统设计模式

使用MVC系列设计模式, 使用在用户界面开发上. 可以把视图, 模型与控制分离开, 实现松
耦合设备, 方便重用, 测试与维护

MVC

mvc-pattern

交互:

优点:

缺点:

以Android和iOS平台讨论, xml或者storyborad为view层, Activity(Fragment)或者ViewController
为controller层.

在Android和iOS中, View层太单薄, 只能静态显示Model, 如果Model改变那么View层无能为力.
所以需要controller层中设置View的监听实现用户交互, 并且获取View引用, 用来动态设置
Model内容. Model中的数据处理, 业务处理一般也会写到Controller层中. 这就造成上面说的
Undermined by inevitable clusteringExcessive boilerplate.

如果需要完全使用MVC, 那么需要创建Model和View接口ModelImpl和ViewImpl实现, 实别哪些
内容放到三个部分的哪一个部分(MVC中定义不清晰), 然后组合到Controller层. 这样做需要
写很多额外的代码.

MVA

MVA是MVC的优化, MVC中View为了监听Model的变化, 需要View与Model关联起来, 添加了
耦合度, 并且不利于复用.

MVA使Controller变成adapter, view和model都与adapter交互, 这样view不需要了解model的格式
和来源; Model不需要了解View是怎么展示的, 所以不需要特定的组合数据适应View.

另外,可以创建多个适配器以更改一个视图显示给定模型的数据的方式。例如,不同的适配
器可能会强加不同的原始数据集,进而对相同的基础数据库和相同的向外展示的网站施加不
同的业务逻辑。在这种情况下,一类各种适配器或中介控制器可以表示同一数据库模型和同
一网站视图之间的业务逻辑变化。

MVP

mvp-pattern

MVP跟MVA很像, 都是与Adapter(Presenter)交互, 主要区别在控制流程: MVP: View会触发/创建/调用Presenter, Presenter将使用Model来响应视图 MVA: 当收到消息时, 将选择一个适合的Adapter(可以有多个)作为Model和View的中介

MVVM

mvvm-pattern

缺点:

  1. 概括ViewModel是很困难的
  2. 大规模的数据绑定会消耗很多内存

Reference

Understanding The Difference Between MVC, MVP and MVVM Design Patterns Understanding Model-View-Controller MVC vs MVP vs MVVM architecture in Android