2012-03-01 32 views
2

在学术上,我熟悉MVC范式,但实际上,我是一个新手。我正在实现我的第一个“真正的”MVC应用程序(AS3中的视频播放器)。MVC新手:三联包装好/坏设计?

我正在创建播放列表(作为视频播放器的侧边栏)。播放列表是可滚动的,当您将鼠标悬停在项目上时,它会补间(展开)以显示更多信息。没什么神奇的。

现在,将会有数十个播放列表项目。我想知道如何在这里管理实际的M,V和C。

所以,我已经有了每个播放列表项的ItemModel,ItemView和ItemController的实例。当我想追加一个新项目到播放列表时,我应该手动实例化一个新的ItemModel,ItemView和ItemController,将它们全部链接起来,将它们放在他们需要去的地方,并[可选地]挂在它们的引用上?

我在想什么是创建一个Item类,它只是MVC黑社会的简单包装。然后,任何客户端与三元组的交互都必须由包装器委托。在这种情况下,该项目“包装”负责

  1. 实例化是MVC的
  2. 事件委托给视图。

这是明智的吗?可扩展?典型?它是反模式吗?在一个包含更多对象的较大系统中,我可以看到自己采用了“MVCW”的范例(对于每个三元组,W是一个这样的包装器),所以4个类,形式为XyzModel,XyzView,XyzController ,和Xyz(或XyzWrapper,或XyzObject,或其他)。

但是......这并不是我之前读过的东西。我知道一个给定的模型可以有多个视图,那么它将如何发挥作用?

所有这一切的动机是,为我需要的每个新“事物”手动创建3个新对象似乎有点愚蠢(特别是在客户端交互非常少的情况下)。我怀疑这仅仅是我对MVC模式的一种错误认识,而且在纠正时,我不仅会理解为什么“包装器”是一个坏主意,而且还会理解如何更好地管理实际对象黑社会。

也许,我的设计方法是完全错误的,这是我混乱的根源。

或者,也许这是一个特殊情况,其中是的,实际上每个清单项目制造3个实例的正确程序。

有什么建议吗?

+0

为什么要为每个实体创建3个类?模型的实体,控制器和视图完全不同的事物是否彼此交谈? – Kos 2012-03-01 14:46:53

+0

每个条目不是三个类 - 每个实体有三个**实例**。一个模型,一个视图和一个控制器。 – 2012-03-01 21:09:55

回答

0

原来,我对何时何地使用模型,视图和控制器的理解有点有缺陷。例如,我最终只使用了ItemView和ItemModel - 全部由PlaylistController的单个实例处理。

看起来好像实例化一个完整的三元组(仅用于一个UI组件)可能不太可能 - 并且在它确实发生的情况下,则它更简洁(和向前兼容)只需简单地制造相关的物体即可。