【发布时间】:2011-02-01 21:37:44
【问题描述】:
这更多是一个理论问题,而不是特定于语言的问题,但我主要指的是 AS3。
假设我有一个通过几个导航级别显示按钮的应用。
例如artistsAlphabetical->albums->songs 或songsAlphabetical->song 或albumsAlphabetical->album->song
所以我们要建立一个包含所有歌曲的模型(数据)(最小公分母 - 它会在歌曲对象中包含艺术家/专辑/年份等信息)
假设我们没有专辑的数据集,需要从歌曲中提取数据。或者我们确实有一个数据集,需要匹配它们。
那应该属于哪一类?模型还是控制器?
我都可以找到原因,但我想知道“更正”的方法是什么。
接下来,我们有一个带有所有按钮的视图来进行排序。
当您点击排序按钮 Artists-A - 这是视图向控制器发送消息以执行某些操作(获取以 A 开头的按字母顺序排列的艺术家列表 )。最终结果应该是一个新的(必要时分页视图),每个艺术家都有按钮。
MVC 的哪个部分应该负责每个步骤?
生成以 A 开头的艺术家列表
会不会是控制器说 - '嘿模型 - 现在以 'A' 开头的艺术家!'
或者,它更像是“模型 - 给我发一份所有艺术家的名单,我需要找到 A-dawgs”?
本质上应该模型进行排序(如果可能/需要缓存它)还是逻辑应该在控制器下,模型可以存储缓存?
因此,一旦我们有了艺术家列表,我们就需要为所有适合屏幕的艺术家创建一个按钮,以及一些上一个/下一个按钮。谁应该创建按钮?
应该有一个视图控制器吗?仅处理创建视图所需的逻辑的子控制器?还是逻辑会成为视图的一部分?在我看来,应用程序的控制器就像“不在我的工作描述中......我给了你需要休息的清单,由你决定” p>
我觉得我在 MVC 的两个视图之间存在冲突,一个 (mvC) - 其中 Controller 像一个母亲一样工作,而 Model 是一个美化的数据持有者,而视图管理 DisplayObjects .或者(一个MVc),其中控制器是确保模型和视图正确通信的管理器/委托者,因此模型和视图将具有相当多的逻辑,并且控制器将处理沟通并委托顶级交互。
虽然我的大部分工作都是在 AS3 中完成的,但我很好奇其他语言会如何处理这个问题。例如,在 PHP 框架中,您无需像使用 as3 那样担心按钮逻辑和事件处理,您需要在其中查看垃圾收集,因此其中一个组件的工作量可能与 Cinder++ 中不同,处理或动作脚本应用程序。
【问题讨论】:
-
您使用的是 MVC 框架,还是更直接的 AS3 MVC 实现之一(即 Moock 的)?
-
这只是一个说明问题细节的例子。我试过 PureMVC,但不喜欢它。我很少与其他开发人员同时从事项目工作,而且我觉得这有点矫枉过正。我不知道 Moock 的实现是什么,我得研究一下。我只是将代码分为三个 MVC 部分,仅此而已。如果你愿意,我可以写一个程序。
-
我回避了框架,直到我意识到它们帮助我在项目之间保持更一致,并且在项目的范围发生了一些严重的变化之后。 Moock 的 MVC 是他在 Essential Actionscript 书籍中描述的(不确定他的 AS3 书中是否有实现,可能在 AS3 Design Patterns 书中)。
标签: actionscript-3 model-view-controller design-patterns programming-languages