Как управлять внутренними настройками конфигурации для библиотеки Java? - PullRequest
1 голос
/ 14 октября 2011

Я занимаюсь разработкой библиотеки Java, которую можно использовать в приложениях для Android, веб-приложений и настольных компьютеров. Библиотека состоит из нескольких в основном разделенных модулей, которые имеют общие параметры конфигурации (например, «включен», «ключ API»).

Цель

Конфигурация должна позволять изменения во время выполнения (например, API, JMX или SharedPreferemes в Android) без ущерба для переносимости (например, без базы данных) , тестируемость или безопасность потоков (некоторые модули работают в отдельную ветку).

подход

В настоящее время я использую объект конфигурации , который я создаю при запуске и передаю различным модулям (которые сами передают его подклассам). Каждый класс затем копирует необходимые поля в локальное поле - единственная проблема: настройки нельзя изменить во время выполнения.

Другие идеи:

  • с использованием статического : трудно проверить
  • передача ссылки на модули: поточно-ориентированные?

Какое здесь лучшее решение / лучшая практика?


ОБНОВЛЕНИЕ: Просто для ясности, модуль не должен знать, было ли внесено изменение в конфигурацию, он должен просто напрямую использовать новое значение поля и работать с ним с тех пор.

1 Ответ

1 голос
/ 14 октября 2011

Некоторые предложения:

  • Не копируйте поля, необходимые каждому классу, в локальное поле; всегда получать доступ к свойствам из объекта config (любое управление кешем должно выполняться для объекта config)
  • Убедитесь, что ни один из классов, использующих объект конфигурации, не изменяет его напрямую каким-либо образом (путем вставки, удаления ключей или изменения его значений)
  • Предварительно загрузить всю необходимую вам информацию в объекте config во время создания экземпляра
  • Сделайте объект конфигурации Singleton и поделитесь им с необходимыми клиентами
  • Предоставляет механизм для объекта конфигурации для удаления любых записей кэша, которые больше не действительны
  • Использование шаблона Observer для обновления кеша
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...