在GoF的Design Patterns一书的1.2节,作者简单的描述了SmallTalk 中的 MVC 模式,但是奇怪的是,
在书的正文部分的23种模式中却没有MVC的位置。原文对MVC简要解释如下:
1. MVC consists of three kinds of objects. The Model is the application object, the View is its screen presentations,
and the Controller defines the way the user inteface reacts to user input .
2. MVC decouples views and modules by establishing a subscribe/notify protocol between them.
在绝大多数桌面应用程序中,MVC中的V和C都合并了。这是因为M需要多个V是常见的,但是同一个
View需要不同的Controller却很少见。书上举的例子就是可以实现ReadOnly的View,通过配置一个什么也不
能干的Controller来实现。
本来MVC就这么多内容了,但是我却被迷惑了很长的时间:
1. MFC 里的 Document/View 结构是不是MVC模式?
2. Web应用中的MVC和SmallTalk定义的MVC是不是一回事?
to be completed
欢迎大家在回复你帮我解答这两个问题。回家吃饭先~
继续,谢谢 的回复:
1. MFC的Document/View 结构并没有实现观察者模式。他不过是简单的划分了谁负责
保存数据,谁负责绘制以及相应操作。所以我们常常可以看到一些应用程序把所有的
数据处理的逻辑集中在了View里。View和View之间也是直接操纵。究其原因,主要
是因为抽象出这个Model其实很不容易,所以常常把它当作一个大仓库和save/open的
工具了事。真正的Model应该把对数据的读写都封装起来,并且实现观察者模式。
2. 在Web应用中,同样也没有MV之间的观察者模式。不过MVC都是完整的。一般Model
代表了数据库,controller接受HTTP请求(GET,POST),调用Model处理,然后调用View来Render.
所以,GoF里描述的MVC,实际上用的并不广泛。虽然它复合了多种模式,是一个理想的例子,
但是在实际应用中,并不是按照理论上的描述来实现的。