MVC模式

 

这是摘要

[TOC]

模型 - 视图 - 控制器

  • 控制器

    取得用户的输入并解读其对模型的操作

  • 模型

    持有所有的数据、状态和程序逻辑。模型没有注意到视图和控制器,虽然它提供了操纵和检索状态的接口,并发送装填改变通知给观察者

  • 视图

    用来呈现模型。视图通常直接从模型中取得他需要显示的数据和状态

  • 用户 - 与vIew交互

    view是model的窗口。当你对view做一些事时,view就告诉controller你做了什么。controller负责处理。

  • controller要求model变更状态

    controller解读你的动作。比如你按下某个按钮,controller会理解这个动作的意思,并告知模型如何做出对应的动作。

  • controller也可能要求view做改变

    当controller从view接收到某一动作,结果可能是它也需要告诉view改变其结果。比如,controller可以将界面上的某些按钮或菜单项变成有效或无效(嗯?为什么不让model改变状态再通知?)

  • 当model状态改变时,model会通知view

    不管你做了某些动作,还是内部有了某些改变,只要当model内的东西改变时,model都会通知view它的状态改变了

  • view向model查询状态

    view直接从model取得它显示的状态。比方说,当model通知view新歌开始播放,view向model查询歌名并显示出来。当controller请求view改变时,view也可能向model查询某些状态。

关于模式

  • model利用观察者模式让controller和view可以随最新的状态改变而更新。
  • view和controller则实现策略模式。controller是view的行为,如果希望有不同的行为,可以直接更换一个controller