java - MVP 中的演示者是如何创建的?

标签 java oop design-patterns mvp android-mvp

我正在查看 MVP 的 google 示例,我看到 this作为 Activity 的 onCreate 中的最后一个语句:

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

这段代码对我来说似乎很奇怪。
它实例化一个本地对象( TaskDetailPresenter ),该对象未分配到任何地方,并且在其中关联 fragment 。与主持人一起。
定义的类 here
这真的是应该做的吗?因为这对我来说似乎不是一个好的做法

最佳答案

TaskDetailPresenter 构造函数中,它们有:

mTaskDetailView.setPresenter(this);

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

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

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

关于java - MVP 中的演示者是如何创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52120658/

相关文章:

c# - 如何为电子邮件消息中的占位符编码?

java - 有人可以解释 Spring Security BasePermission.Create 吗?

java - 包和类范围规则?

c++ - 在OOP中,是调用函数返回值更快,还是直接调用值更快?

C++ 不能使用从基类继承的getter函数

Java:是否有一种数据结构可以像多重映射一样工作,但接受重复的键?

design-patterns - 何时在类名中包含设计模式名称?

Java servlet 方法 HashMap 范围

java - JPA 实体映射 - 链接同一个实体

design-patterns - 命名类 - 如何避免将所有内容都称为 "<WhatEver>Manager"?