MVC新手:黑社会包装好/坏设计?

时间:2012-03-01 14:44:36

标签: model-view-controller design-patterns

在学术上,我熟悉MVC范例,但实际上,我是一个新手。我正在实现我的第一个“真正的”MVC应用程序(AS3中的视频播放器)。

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

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

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

我正在考虑的是创建一个Item类,它只是MVC三元组的一个简单包装器。然后,任何客户端与三元组的交互都必须由包装器委派。在这种情况下,Item“wrapper”负责

  1. 实例化MVC三元组
  2. 将事件委派给视图。
  3. 这是明智的吗?可扩展?典型?这是一种反模式吗?

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

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

    所有这一切的动机是,为我需要的每个新“事物”手动创建3个新对象似乎有点愚蠢(特别是在客户端交互将如此微小的情况下)。我怀疑这只是我对MVC范式的一种失误,而且经过修正后,我不仅会理解为什么“包装器”是一个坏主意,而且还会理解如何更好地管理实际对象。黑社会。

    也许,我的设计方法完全错了,这是我混淆的根本原因。

    或者,也许这是一个特殊情况,是的,实际上每个列表项制造3个实例是正确的过程。

    有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

似乎用于(并且仅用于)单个UI组件的实例化完整三元组的情况可能不太可能 - 并且在它确实发生的情况下,那么它更简洁(和向前兼容)到简单完全制造相关的物体。