模型(Model):
- 模型就是数据的一个存储空间,它与视图和控制器分离开来。
- 模型不应该持有视图或者控制器的引用,正是由于模型的这种独立性才构成了MVC模式的灵活适用性,保证MVC模式的功能性的良好发挥。模型和视图或控制器的直接连接,会导致整个系统的紧密耦合。
- 模型的数据变更时,通过向外派发事件通知视图与控制器,但其只负责派发过程,而不需要关心有哪些元素正在监听。
视图(View):
- 视图仅仅由可视化元素组成。
- 视图包含了系统与用户进行交互的所有用户界面元素,而用户的输入操作由控制器(Controller)负责响应。
- 视图通过调用模型中的数据绘制外观。
- 视图密切关注模型的状态变更,其与模型的交流方式有两种:监听模型派发的事件以及从模型中读取数据。
- 视图不应向模型中写入任何数据信息,即模型中的数据对于视图来说应当是只读性的。
- 每一个视图单方面持有其数据模型的直接引用。
控制器(Controller):
- 控制器的职责在于在需要的时候获取输入以及更新数据和视图信息。
- 控制器同样密切关注模型的所有状态,其负责在适当的情况下根据用户输入和系统事件来更新模型。
- 控制器和视图是紧密耦合的,虽然一个控制器可以同时使用多个视图,但是推荐使用一对一的视图控制器联系。
MVC逻辑关系与功能示例图
以下图片来自网络: