MVC 包括三类对象。Model是应用对象,View是它在屏幕上的显示,Controller定义用户界面对用户输入的响应方式。UI设计中往往将这些对象混在一起,但使用MVC将它们分离可以提高灵活性和复用性。
MVC通过建立一个‘subscribe & notification’协议来分离视图和模型。视图保证它的显示正确地反映了模型的状态;一旦模型数据发生变化,模型将通知有关的视图,但每个视图相应地得到刷新自己的机会。
将对象分离,使一个对象的改变能够影响另一些对象而又不需要知道那些被影响的对象的细节,即以"subscribe & nofitication"见长的Observer 模式。
对View而言,在视图嵌套的情况下,组合按钮对象和单一按钮对象其实都可以当成平等对象来对待;这里就对应于模式中的Composite模式。
MVC允许你在不改变视图外观的情况下改变视图对用户输入的响应方式,如改变视图对键盘的响应方式,或使用菜单而不是原来的命令键方式。MVC中这些机制封装在Controller对象中。存在着一个Controller的类层次结构,使得可以方便地对原来的Controller作出适当改变而创建新的Controller.
View使用Controller子类的实例来实现一个特定的响应策略。要实现不同的响应策略使用不同种类的Controller实例替换即可;甚至可以在runtime状态下通过改变View的Controller来改变View对用户输入的响应方式。
View-Controller的关系是Strategy模式的一个例子。一个策略是一个表述算法的对象;通过动态或静态地替换算法即可实现对View的不同响应。
In a summary, MVC中会用到很多设计模式,如用于指定视图缺省Controller的Factory Method, 增加视图装饰效果的Decorator, etc. 但MVC最主要还是邮Observer, Composite 及 Strategy三个设计模式给出的,其它的都作为一种补充和扩展。
Model
/
Observer (subscribe/notification)
/
View -------- Strategy --------- Controller
阅读(781) | 评论(0) | 转发(0) |