模型视图控制器混乱

Model View Controller Confusion

我有一个关于模型视图控制器设计模式的问题。

我将解释我对我的问题的看法。

如果我的模型中有一个名为 iModel 接口 。我有两个实现 iModel 的 classes。第一个 class 称为 Game1,第二个 class 称为 Game2

在我的视图包中,我有一个 Gui class,它接受一个 iModel 实例并使用 iModel 实例制作游戏。例如 GUI(iModel m)

自从我通过了 iModel,我可以一次通过两个不同的游戏。

一场比赛

iModel m = new Game1(); 

在视图中,Gui(m) 将创建 Game1

其他游戏

iModel m2 = new Game2(); 

看来,Gui(m2)会创建Game2

现在这个概念基本上是我将多个模型(一次只有一个)传递到视图中。视图将是相同的,但具有不同的数据,具体取决于所选的游戏(模型)。

现在我的问题是,那是 MVC 吗?我读了一些关于 MVC 的东西是关于发送一个模型来为该模型创建所有不同类型的视图,但我的想法是,如果将不同的模型传递到具有相同视图的视图中。这算作 MVC 吗?

谢谢

Now my question is, is that MVC?

从纯技术的角度来看,不,因为您实际上没有单独的控制器,但这是朝着正确方向迈出的一步;)

I read some stuff about MVC is about sending in a model to create all different types of view for that model, but my thoughts are,if passing in different models into the view with the view just the same. Does that count as MVC?

没错,但我认为您可能误解了它的意思。该模型不关心视图,不关心数据的表示方式,它只关心维护视图期望的契约(由 interface 指定)。

同样,视图不关心模型是如何实现的,只关心模型是否支持 interface 的契约。

这意味着一个模型可能被多个以不同方式表示数据的不同视图使用。同样,它可能只有一个人可以想象。关键是,模型不应该关心。

所以我想说你的观点是好的。一个视图在其生命周期内可以表示多个模型

记住,像 MVC 范式这样的东西的要点是清楚地分离和定义层之间的责任,并解耦层之间的关系。

深思...

在iOS开发中,模型和视图是明确分离的,以至于两者之间不应该交互,实际上它们之间的所有通信都由控制器处理。这有时看起来很矛盾,因为您希望模型告诉视图更新某些内容。

在这种情况下,通过允许控制器充当模型和视图之间的代理或委托,您实际上进一步分离了这种关系,因为您可以滑入一个可能有自己的视图并提供功能的新控制器就插件而言,关键是,你不应该关心。

所以你现在完全糊涂了;)