【发布时间】:2017-09-12 11:55:22
【问题描述】:
在我的 android 中使用 Dagger 2 和 MVP 模式,并在一些概念上有点挣扎。
假设我有一个演示者DashboardPresenter,当我在活动或其他演示者中需要它时,我会使用以下方法注入它:
@inject
DashboardPresenter presenter;
或者在其他presenter的构造函数中:
@inject
public AccountPresenter(DashboardPresenter presenter) {
//init
}
现在我不太确定它是如何工作的,但我想做以下事情:
假设我创建了一个BaseDashboardPresenter,它将作为父级
我为它创建了 2 个孩子:NormalDashboardPresenter 和 ProDashboardPresenter 都从它扩展而来。
当我想在一个活动或另一个演示者中使用它时,我通过调用注入 Base Presenter
@inject
BaseDashboardPresenter presenter;
并且我覆盖了@inject 行为,以基于布尔值注入其中一个孩子。
所以是这样的:
//in BaseDashboardPresenter
override inject() {
if(Utility.checkIfUserIsPro()) {
inject ProDashboardPresenter();
} else {
inject NormalDashboardPresenter();
}
}
所以从我的活动中我只是调用了 Base 类中的抽象方法,区别只是注入了哪个子类。
这可能吗? 如果需要,很乐意提供更多说明。
【问题讨论】: