使用Singletons编写的AIR应用程序需要生成多个app实例

时间:2011-12-14 21:15:56

标签: flex actionscript air singleton

我有一个AIR应用程序,它使用Singletons来管理整个应用程序的全局状态。适用于它的功能(管理网络设备)。但是现在客户端想要从第一个实例生成多个应用程序实例,这样他们就可以同时管理多个硬件设备......有点像仪表板但是更大。

正如你猜测的那样,我将自己编码到单个角落的一个角落,所以如果我重构应用程序以使用一个带有按钮启动应用程序逻辑的引导类,那么就会产生另一个包含相同应用程序逻辑的窗口,那么单身人士在两个应用程序窗口共享,而我会喜欢两个单独的实例。

有没有办法使用单例(或其他东西)来保持全局状态,但在一个应用程序中创建多个实例,其中每个实例都需要它自己的状态管理器?

1 个答案:

答案 0 :(得分:1)

有几种不同的选择:

  1. 将每个应用程序实例加载到自己的ApplicationDomain
  2. 使用dependency injection frameworks中没有得到单例的其中一个 - 而不是它的值在运行时分配给您的类属性。所有内容都由元数据管理。这需要一些代码更改。
  3. 重构您的代码,以便每个类实例都知道它的上下文。这可以通过添加构造函数参数或setContext(value:Context)函数来实现。 Context实例将包含指向所有前单身人士的链接。
  4. 向上移动显示列表,直到找到可以为您提供前单例链接的类实例。确保每个非显示列表对象都有一个显示列表对象的链接以获得单例。