Flash Builder松散耦合和可重用的组件架构

时间:2012-02-23 21:08:08

标签: flex actionscript flash-builder

我希望我的mxml或actionscript组件可重用且松散耦合。我想知道使用FlexGlobals.topApplication分派和监听事件是否是一个好习惯。例如,我希望我的登录组件将事件分派给topApplication,因此当我在不同的项目中重用该组件时,我不需要更改任何应用程序都有topApplication的内容。
我的另一个选择是有一个单独的静态类来处理事件调度,但后来我正在创建一个对该静态类的依赖。 任何建议,将不胜感激。 感谢。

2 个答案:

答案 0 :(得分:2)

我建议您阅读有关事件传播的内容,并让您的登录组件将事件分派给“无论是谁”,因为它会在层次结构中冒泡。

http://livedocs.adobe.com/flex/3/html/help.html?content=events_08.html

答案 1 :(得分:0)

在大多数情况下,我必须同意Stian的回答。关于weltraumpirat的评论我觉得依赖注入可能很好,但也增加了很多关于调试/测试IMO的复杂性,如果你实际上不会有不同的接口实现只是增加了很多垃圾代码来看通过没有任何实际利益。我觉得服务层上的Spring运行良好,因为如果你切换数据库或类似的东西,你可以更改数据访问层(DAO)的实现,但我很难看到前端的好处。

我不建议使用topLevelApplication,因为你最终会得到像cairngorm这样的东西,你会在顶层发生这些庞大的事件/事件处理程序。更不用说如果你按照他们建议的模型你最终得到一堆无意义的事件类,只是简单地定义一个字符串(使用Cairngorm有更好和更坏的方法,但我不喜欢我所看到的狂野的。)

我公司的开发人员编写了一个定制的MVC“微框架”,它对我们很有用,我们可以将控制器连接到任何显示对象来处理它的事件,这非常有效,但确实需要开发/的初始开销测试它。它建立在Flex中现有的Event方案之上,因此我们的MVCEvent类扩展了Event(默认情况下我们只是bubble,因为我们倾向于将这个用于我们创建的事件类型,其中控制器可以位于UIComponent调度之上的任何级别事件,并且总是可以选择关闭冒泡,但是从Event基类开始意味着我们可以使用内置的EventDispatcher dispatchEvent()方法)。他写了几乎所有东西,使用一个接口来定义每个部分的方法,并且只假设对象实现给定的接口在特定的上下文中使用(如在IMVCEvent,IMVCCommand中),如果内置的框架实现不适用于您需要创建一个实现相同界面的新类(如果扩展也不适用于您的情况),您的特定场景。这提供了巨大的灵活性,同时我们通常只能重用事件,命令或控制器的现有实现。在每个应用程序中,我们只是为特定于应用程序的业务规则的事物定义新的视图和命令。

那么归结为什么,我建议您将自己作为一个库自己滚动,然后为您的许多项目重新使用该库。您将了解自己的库,并且可以快速调整它,而无需了解有人设计其MVC框架的许多用例。

我意识到这对于现在完成某项工作的速度而言并不是一个理想的解决方案,但我认为它确实是长期的最佳解决方案(这对我们来说真是太棒了)。< / p>

此处的修订是为了表彰现有的Flex MVC框架并安抚人群。

Robot Legs 顺便说一下,看看机器人腿的创造者对使用他的代码有什么看法:His words not mine

Swiz

Mate

Stackoverflow question about flex frameworks