认识模型 - 视图 - 控制器模式(MVC)
- 你是用户——你和视图交互。 视图是模型的窗口。当你对视图做一些事时(比方说,按下“播放”按钮),视图就告诉控制器你做了什么。控制器会负责处理。
- 控制器要求模型改变状态。 控制器解读你的动作。如果你按下某个按钮,控制器会理解这个动作的意义,并告知模型如何做出对应的动作。
- 控制器也可能要求视图做改变。 当控制器从视图接收到某一动作,结果可能是它也需要告诉视图改变其结果。比方说,控制器可以将界面上的某些按钮或菜单项变成有效或无效。
- 当模型状态改变时,模型会通知视图。 不管是你做了某些动作(比方说按下按钮)还是内部有了某些改变,只要当模型内的东西改变时,模型都会通知视图它的状态改变了。
- 视图向模型询问状态。 视图直接从模型取得它显示的状态。比方说,当模型通知视图新歌开始播放,视图向模型询问歌名并显示出来。当控制器请求视图改变时,视图也可能向模型询问某些状态。
MVC中的组合模式、策略模式、观察者模式
视图和控制器实现了经典的策略模式:视图是一个对象,可以被调整使用不同的策略,而控制器提供了策略。视图只关心系统中可视的部分,对于任何界面行为,都委托给控制器处理。使用策略模式也可以让视图和模型之间的关系解耦,因为控制器负责和模型交互来传递用户请求,对于工作是怎么完成的,视图毫不知情。
注意在MVC中,模型对视图和控制器一无所知。换句话说,它们之间是完全解耦的。模型只知道,有一些观察者它需要通知。这正是观察者模式美妙的地方。模型还提供一些接口,供视图和控制器获得并设置状态。
MVC Model2