Использование otto для межфрагментной связи - ввод зависимостей сбивает с толку

Я хочу использовать Отто для межфрагментной связи. Я хочу сделать это, используя лучшие практики, если я могу помочь. В примере Otto на Github используется синглтон для объекта Bus, но рекомендуется использовать внедрение зависимостей. Я новичок в обеих этих концепциях, хотя первое кажется легче реализовать. Я изо всех сил пытаюсь понять, как бы я сделал последнее без значительных усилий, несмотря на то, что читал.

Есть инжекторы зависимости от ОС dagger, guice и несколько других, но они кажутся довольно тяжелыми для такого относительного новичка, как я. Мне интересно, действительно ли стоит учиться использовать один из них для, казалось бы, незначительного повышения эффективности/конвенциональности кода. Не говоря уже о том, что они раздуют мой проект.

Стоит ли реализовывать Otto с помощью DI, когда я собираюсь использовать его только для замены нескольких интерфейсов и слушателей здесь и там? Я действительно буду регистрировать Bus только в нескольких действиях, содержащих фрагменты.

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

Наконец, нужны ли мне отдельные экземпляры Bus для отдельных групп фрагментов активности, где связь будет происходить только внутри указанных групп? Из прочтения мне не ясно, нужно ли мне делать это для лучшей практики/эффективности или безопасности?


person nme32    schedule 30.07.2013    source источник


Ответы (1)


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

Если вы начнете выполнять модульное тестирование позже, то добавление DI будет хорошим шагом.

Что касается вопроса об отдельных экземплярах Bus для отдельных групп фрагментов действий, в этом может не быть необходимости, если эти группы фрагментов действий не публикуют и не подписываются на одни и те же виды событий. То есть, если группа фрагментов действий A заботится только о событиях Foo, а группа фрагментов действий B заботится только о событиях Bar, то я думаю, что один Application-scope Bus может удовлетворить ваши потребности.

person Andy Dennie    schedule 30.07.2013
comment
Я согласен, хотя я думаю, что в какой-то момент для меня может быть идеей изучить модульное тестирование, особенно ради приложений с множеством действий. Помимо аспекта обучения, кажется, что в будущем будет относительно легко переключиться на что-то вроде Dagger. - person nme32; 02.08.2013