你知道Adobe Air/Flex应用程序的最佳实践和设计模式吗?

4
我将要使用Air/Flex框架编写一个应用程序。我正在寻找最佳实践和通用设计模式,特别是在Air/Flex中设计软件方面。 我有这个框架的经验,但从未有机会从头开始编写一段软件。
例如:
  • 我发现许多使用Air/Flex编写的软件具有近乎无限的全局变量:-)
  • 大多数我看到的软件都不是面向对象的
  • 如何优雅地打包异步方法调用?
我熟悉gamma的通用设计模式。我更希望在设计Adobe Air/Flex高质量软件方面得到建议。
4个回答

2
“最佳实践”和“设计模式”都是要看你想做什么。每个选择都有权衡。了解这些权衡并根据需要开发做出决策是很好的。对于你的问题,它非常开放;我可能可以写一本书才能回答。
关于你的几个要点,以下是一些想法:
我偶然发现了很多用Air/Flex编写的软件,全局变量近乎无限:-)
这是使用Cairngorm框架时常见的方法,该框架利用ModelLocator。在许多应用程序中,ModelLocator变成一个大的全局值对象,在整个应用程序中都被使用。我在这篇博客文章中谈到了我如何处理这个问题:http://www.jeffryhouser.com/index.cfm/2008/3/27/Learning-Cairngorm-Part-6-Dealing-with-the-Singleton 我看到的大多数软件都不是面向对象的。
尽管面向对象编程引起了很多兴趣,但我从未见过任何项目架构采用面向对象的方法,从学术上讲。最好的情况是我会将所有开发称为面向对象概念和过程概念之间的混合体。我与许多人交谈过,他们似乎声称任何使用封装的都是面向对象的,而不使用封装的就是过程化的。当然,这是荒谬的。
在构建Flex组件时,您将在Flex组件生命周期方法(createChildren()、commitProperties()、measure()和updateDisplayList())中编写大量代码,但您可能不会创建自己的面向对象架构。
“如何将异步方法调用打包得好看一些?”我不确定您在这个上下文中的“打包”是什么意思。

1

看看RobotLegs。它包括依赖注入非常灵活,易于快速上手运行。

http://www.robotlegs.org/

有很多针对Flex的框架。挑选一个比另一个好是相当费力的事情。选择一个有很多示例和良好社区支持的框架。


1

ModelLocator是一种反模式;我建议避免使用Cairngorm,而选择更好的框架,比如Spring Actionscript:http://www.springactionscript.org/

我推荐Shashank Tivari的《Advanced Flex》(Friends of Ed出版社),它提供了关于Flex最佳实践的优秀概述。(显然,因为我是新用户,我无法发布链接,但你可以轻松地在谷歌上搜索或在亚马逊上找到它。)


我要补充的是,我强烈不同意上面的说法,即您可能不会创建OO软件。对于非平凡的Flex项目,建议使用OO技术,同样适用于任何软件开发。 - micapam

0

我可以强烈地推荐在Flex中使用Swiz框架(我从未使用过Air,但应该是相同的)。最近,在我的新工作中,我很高兴地接手了一个前任从头开始构建的Flex应用程序,并从零开始,使用我喜欢的任何方法。

我想在Flex中使用一个框架,所以我看了看Cairngorm和Mate,但Swiz因其简单性而脱颖而出。您可以在shiny new wiki中阅读所有内容,但Swiz遵循各种其他框架的依赖注入/控制反转方法(如果您熟悉Spring,则非常相似),但尽可能以最简单的方式进行操作。只需在代码中添加一些元数据,您就可以获得几乎不涉及库的所有好处,并且几乎没有样板代码(与Cairngorm形成鲜明对比)。

从那里开始,推荐的方法是使用演示模型模式(请参见维基中的最佳实践)来将视图与底层数据分离(MVC方法),它也非常好用。Swiz非常棒,因为它不会强制你做出任何设计选择,它只提供了让你按照自己想要的方式进行设计的工具。你可以通过调用executeServiceCall()来“打包”异步服务调用,传递AsyncToken、结果处理程序和故障处理程序,并且你可以传递一个任意对象数组来在请求和结果之间维护引用/状态。它真的是“极其简单”的。

邮件列表上的开发人员也非常乐于助人,通常会在当天回复。我无法感谢他们足够:)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接