Implementation Design (Under construction)

Инициализация и интерфейсы

Библиотек внедрения зависимостей (DI)

В качестве основной библиотеки DI используется (dagger)[https://google.github.io/dagger/] от Google. Дополнительно используется (Spring)[https://spring.io/] с его реализацией DI.

Структура компонентов

Для простоты тестирования все компоненеты каждого под-проекта реализуются в ввиде интерфейса IXXXManager/Builder/SomeMaker и реализации в виде XXXManager/Builder/SomeMakerImpl, который создаётся автоматически через конструктор по-умолчанию с помощью DI.

Инициализация компонентов

Инициализация компонентов по возможности выполняется через пустой метод initialize в DI. при наличии сложной зависимости метод initialize выносится в интерфейс и вызывается после создания объекта. При этом при неуспешной инициализации (в большинстве случае связанной с недоступностью сетевых ресурсов) никаких исключений не выбрасывается, а ставится флаг “initialized=false” и выполнятеся соотвествующая проверка при вызове опубликованного метода с последующей инициализацией. Исключение при инициализации стоит бростаь лишь при непоправимых ошибках (например неверная конфигурация).


Table of content: