如何在MVP中创建演示者?

问题描述 投票:0回答:1

我正在查看谷歌样本的MVP,我看到this作为活动的onCreate的最后一个声明:

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

这段代码对我来说很奇怪。 它实例化一个本地的对象(TaskDetailPresenter),并没有在任何地方分配,并在其中将fragment与演示者相关联。 类定义here 这真的是应该如何完成的吗?因为对我来说这似乎不是一个好习惯

java oop design-patterns mvp android-mvp
1个回答
2
投票

TaskDetailPresenter构造函数中,他们有:

mTaskDetailView.setPresenter(this);

因此,presenter对象被传递给片段(MVP中的“View”)。该片段存储对演示者的引用。这没关系 - View可以使用此配置轻松与其演示者进行通信。

但是他们在这里使用的技巧 - 在构造函数完成之前调用setPresenter(this)是一件坏事。在这里你可以找到这个问题的解释:http://www.javapractices.com/topic/TopicAction.do?Id=252

如果该引用刚刚保存到属性并且一切都在一个线程中发生,则可能没问题。但是将来可能会发生一些变化,我们可能会遇到麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.