当视图不与模型交互时,它是MVC吗?

时间:2009-01-29 22:57:28

标签: .net model-view-controller design-patterns

我设计了一个MVC(在.NET中),其中View没有链接到Model。它只知道控制器。传统的MVC模式具有相互通信的所有部分。在我的情况下,Controller基本上是一个调解员。这可以保留View之外的任何异常或逻辑。它对模型没有依赖性。这不再是MVC吗?

4 个答案:

答案 0 :(得分:19)

您所描述的实际上是名为Passive View的模型 - 视图 - 控制器的子集。

alt text

  

被动视图是另一种变体   在模型 - 视图 - 控制器和   模型 - 视图 - 主持人。和这些一样   UI在视图之间分开   处理显示和控制器   响应用户手势。的的   被动视图发生重大变化   是视图是完全的   被动,不再负责任   从模型中更新自己。 As   结果是所有视图逻辑都在   控制器。结果,有   两个方向都没有依赖关系   在视图和模型之间。

Martin Fowlerabove link中对此进行了讨论,并简要讨论了其他变体here

答案 1 :(得分:1)

我想而不是MVC,那只是VC,嗯? ;)

在MVC实现中,视图订阅模型中的更改,并作用于控制器;控制器对模型进行更改,通过对模型的引用将其传播到视图。在你的情况下,听起来更像你已经将你的模型埋在你的控制器中(毕竟,你必须从某个地方获取你的数据);这不一定是坏事或任何事情,但严格来说它也不是MVC。

答案 2 :(得分:0)

在最严格的意义上,没有。但是如果需要的话,它是否有视图与模型通信而不改变架构/接口的方式?

[例如,如果你实现了一个TalkToModel()方法,即使你不使用YET,我的视图中也是一个MVC。]

答案 3 :(得分:0)

你的方法看起来很像MVP,但如果没有更多细节,我无法肯定。