如何在MVP中创建演示者?

时间:2018-08-31 17:59:53

标签: java oop design-patterns mvp android-mvp

我正在查看MVP的google示例,并且发现this是该活动onCreate中的最后一个声明:

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

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

1 个答案:

答案 0 :(得分:2)

TaskDetailPresenter构造函数中,它们具有:

mTaskDetailView.setPresenter(this);

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

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

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