flash - Flash AS3 RIA 开发的更好实践 - 使用事件/监听器,还是允许子级调用父级中的函数?

标签 flash actionscript-3 apache-flex

我正在开发一个内置于 Flash AS3 中的网络应用程序。

在高层次上 - 应用程序有一个主屏幕和几个“模态对话框”类型的屏幕,这些屏幕会弹出以管理各种用户交互。

(这是我在开发的大多数应用程序中使用的类似模式...)

通常 - 当用户单击对话框屏幕上的 UI 控件(例如,按钮、文本框、 slider 等)时 - 主屏幕需要使用react或管理后果。

似乎有两种通用的方法来处理这个问题:

  1. 让对话框屏幕调度主屏幕监听的事件
  2. 当点击这些控件时,允许对话框屏幕调用主屏幕中的函数(这要求对话框屏幕保持对主屏幕的引用,并且主屏幕中的函数是公共(public)的)

总的来说 - 我知道第一种方法的主要好处之一是对话屏幕不是那么紧密耦合;它的唯一职责是广播事件。这将使我能够更轻松地在其他上下文或应用程序中使用对话框类。

但是对于我开发的许多 RIA - 一个特定的屏幕对于应用程序来说是SO SPECIFIC,我不可能在另一个应用程序中重用它。因此,“易于重复使用”的好处是微乎其微的。

那么 - 如果你消除了这种好处 - 哪种方法实际上更好? (性能更高,资源消耗更少?)

例如 - 如果我使用事件,那么 Flash 需要为可能永远不会发生的事件管理许多监听器。所以 - 如果对话窗口可以直接调用主屏幕中的函数,而不是调度事件,可能会更有效。

哪种方法更好?每种方法还有哪些其他好处/优点/缺点?

非常感谢。

最佳答案

MVC 模式和许多开发人员认为通过事件解耦逻辑是一种优越的模式。

这可以实现代码重用,并且在生命周期方面通常比子级从父级调用函数更稳定。 parent 添加 child ,但 child 调用 parent 意味着两个对象都必须知道并处理类型定义。没有办法隔离功能单元。

也许你的实现太具体了,抽象更多的功能会比你引用的更多重用。较大的项目会很快达到复杂性,从而难以管理纯程序模式。

程序化实现应该向下传递, parent 保持对 child 的控制。事件向上冒泡。

child 维护控制类似于 IoC(控制反转)模式,类似于 Java Spring 或 Swiz 框架为 Flash 提供的内容。

函数将执行得更快;但是,除非您说的是数千个执行模式的类,否则您所说的开销是最小的。在这种情况下,单例引擎可以帮助加快实现速度。

没有监听器的事件基本上没有开销。

关于flash - Flash AS3 RIA 开发的更好实践 - 使用事件/监听器,还是允许子级调用父级中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837188/

相关文章:

flash - 创建 Flash 拖放珠宝游戏?

apache-flex - 如何降低flex移动SpinnerList组件的滚动速度

javascript - 有没有什么游戏是用flash(as3)和javascript一起制作的?

javascript - 使用 JavaScript 在 Flash 中模拟鼠标点击

flash - 如何去除 SWF 文件中的白色背景?

actionscript-3 - AS3:如何停止电影剪辑中播放的主要声音

c - netStream.appendBytes() 的 FLV 关键帧的字节偏移量

actionscript-3 - 从 AS3 创建圆形按钮?

apache-flex - 如何从 Adob​​e Flex 中的 SWFLoader 组件卸载外部加载的 SWF 文件?

apache-flex - 删除布局中的 Flex Chart AxisRenderer?