Как ведущий создается в MVP? - PullRequest
       53

Как ведущий создается в MVP?

0 голосов
/ 31 августа 2018

Я просматривал образцы Google для MVP и увидел это как последнее утверждение в onCreate действия:

new TaskDetailPresenter(  
                taskId,  
                Injection.provideTasksRepository(getApplicationContext()),  
taskDetailFragment);

Этот код кажется мне странным.
Он создает экземпляр объекта ( TaskDetailPresenter ), который является локальным и нигде не назначен, и в нем связывает фрагмент с презентатором.
Классы определены здесь
Это действительно так, как это должно быть сделано? Потому что мне это кажется плохой практикой

1 Ответ

0 голосов
/ 02 сентября 2018

В TaskDetailPresenter конструкторе они имеют:

mTaskDetailView.setPresenter(this);

Таким образом, объект презентатора передается во фрагмент («Просмотр» в MVP). И этот фрагмент хранит ссылку на докладчика. Это нормально - View может легко общаться со своим докладчиком в этой конфигурации.

Но уловка, которую они используют здесь - вызов setPresenter(this) до завершения работы конструктора - это плохо. Здесь вы можете найти объяснение этой проблемы: http://www.javapractices.com/topic/TopicAction.do?Id=252

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

...