Добавление пользовательского класса ко всем докладчикам

StackOverflow https://stackoverflow.com/questions/3141969

  •  01-10-2019
  •  | 
  •  

Вопрос

Я смутно понимаю, что такое ДЖИН, но могу ли я использовать его для инъекционных выступлений и т.д.

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

Я добавил @Inject в конструктор моего класса User и добавил User в свой модуль GIN...но в остальном я совершенно растерян.Должен ли я привязать его к моему app presenter (пробовал это, но получаю сообщение об ошибке, поскольку User не расширяет мой AppPresenter)?Как одиночка?Является ли это вообще правильным способом передачи этих данных?

Я ненавижу публиковать это здесь (не ищу бесплатную домашнюю работу), но я не могу найти достойный учебник / пример по этому вопросу где-либо еще.

Заранее большое спасибо.

Это было полезно?

Решение

Я вижу две возможности:

  • вводить с использованием источника, являющегося @Обеспечивает способ или Поставщик услуг.Однако проблема заключается в том, как передать текущего вошедшего в систему пользователя этим методам, поскольку глобальное состояние - это no-no.Возможным решением было бы передать его через шину событий, но на данный момент кажется, что это как бы сводит на нет весь смысл DI (внедрение текущего вошедшего в систему пользователя, ИМХО, не входит в роль DI).
  • обходит пользователя по шине событий.Создайте пользовательское событие, которое запускается при входе пользователя в систему / изменениях, и некоторые ведущие прослушивают это событие (в конце концов, не все ведущие должны знать текущего пользователя).

Я предпочитаю и использую второй подход - хотя DI потрясающий, использовать его так, как вы описали, мне кажется несколько халтурным.Я настоятельно рекомендую ознакомиться с Документация Guice - По сути, Gin - это графический интерфейс, прекрасно адаптированный для работы с GWT, так что суть та же.Для получения некоторых других указаний, как эффективно использовать DI и, в целом, писать тестируемый код, я настоятельно рекомендую Блог Миско Хевери и тот руководство по написанию тестируемого кода он разместил там (используется внутри Google).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top