Приложение AIR, написанное с использованием Singletons, должно порождать несколько экземпляров приложения. - PullRequest
1 голос
/ 15 декабря 2011

У меня есть приложение AIR, которое использует Singletons для управления глобальным состоянием во всем приложении. Прекрасно работает для того, что он делает (управляет сетевым устройством). Но теперь клиент хочет порождать несколько экземпляров приложений из первого экземпляра, чтобы они могли управлять несколькими аппаратными устройствами одновременно ... вроде как панель инструментов, но намного больше.

Как вы можете догадаться, я закодировал себя в углу с одиночками, поэтому если я реорганизую приложение, чтобы иметь класс начальной загрузки, который запускает логику приложения с помощью кнопки, скажем, которая порождает другое окно, которое содержит ту же логику приложения затем синглтоны распределяются между обоими окнами приложения, тогда как мне хотелось бы два отдельных экземпляра.

Есть ли способ использовать синглтоны (или что-то еще) для сохранения глобального состояния, но создавать несколько экземпляров в одном приложении, где каждому экземпляру нужен собственный менеджер состояний?

1 Ответ

1 голос
/ 15 декабря 2011

Существует несколько различных опций:

  1. Загрузка каждого экземпляра приложения в его собственный ApplicationDomain
  2. Использование одной из инфраструктур внедрения зависимостей там, гдене получить синглтон - вместо этого его значение присваивается свойству класса во время выполнения.Все вещи управляются метаданными.Это потребует некоторых изменений кода.
  3. Выполните рефакторинг вашего кода, чтобы каждый экземпляр класса знал его контекст.Это можно реализовать, добавив параметр конструктора или функцию setContext(value:Context).Экземпляр Context будет содержать ссылки на все ваши бывшие синглеты.
  4. Перейдите по списку отображения, пока не найдете какой-нибудь экземпляр класса, который может предоставить вам ссылки на бывших синглетонов.Убедитесь, что у каждого объекта, не являющегося списком отображения, есть ссылка на объект списка отображения, чтобы также получать синглтоны.
...