Model-View-Controller (MVC) 设计模式将对象(objects)分配成三种角色:Model,View以及Controller。MVC设计模式(design partern)不仅仅将应用程序中对象分配成不同的角色,而且定义了各自之间交互方式。这三种类型的对象被严格区分,也可以相互之间进行交互。应用中的某一个MVC角色的集合有时候也被称作层(layer)——比如model层。
Model对象
Model将程序的数据封装起来,并且定义操作和处理数据的逻辑和计算。举例来说一个Model对象可能代表一个游戏章节或者通讯录中的一个联系人。Model之间的关系可以是一对一或者多对多的,所以有的时候一个程序中的Model层也是一个或者多个高效的关系网。许多在程序中部分表示持续存在的状态的数据应该封装在Model中。因为模型对象具有与特定问题领域有关的代表性知识和专业知识,所以他们在相似的问题领域中都会得到应用。理想情况下,模型对象应该与显示并且允许用户编辑这些数据的视图对象没有明确的联系——它不应该关心用户界面和显示问题。
关于交互:用户在View层的生成或修改数据的操作应该通过controller对象进行交互,并且结果是创建或者更新model对象。当model对象发生改变的时候,通知到controller对象,最终将对适当的view对象进行更新。
Controller对象
Controller对象在一个或者多个view对象和与之相对应的一个或者多个model对象之间扮演中间人的角色。model和view对象通过controller来交接彼此之间的变化。Controller在程序中执行出事设置和坐标跟踪任务,也管理着其他对象的生命周期。
关于交互:Controller将用户view中的操作转变成新的数据(或者是数据更新),再与model层进行交互。当model中的数据改变时,controller再次作为中间人,通知view进行更新。
实际应用举例
在用户对列表视图进行下拉刷新的时候的响应过程如下图。