我正在编写SDK,供第三方使用。该SDK提供了一系列Activity
和Fragment
之间的复杂互动。我们希望能够做的事情之一是允许SDK的用户通过子类化我们提供的Activity
和/或Fragment
来定制功能。目前,使用工厂有点笨拙地处理模型:
class WidgetActivity extends Activity {
public WidgetFragment buildWidgetFragment() {
return new WidgetFragment();
}
}
class WidgetFragment extends Fragment {
}
class IntentFactory {
public WidgetActivity buildWidgetIntent() {
return new Intent(WidgetActivity.class);
}
}
但是,这意味着如果用户想要自定义WidgetFragment,他们必须提供IntentFactory,WidgetActivity和WidgetFragment的子类。更重要的是,WidgetFragment实际上是在两个或三个不同的Activity之间使用的,因此它们也必须提供每个Activity的子类,并且没有真正的保护来防止丢失其中的一些。显然,这可以通过添加FragmentFactory来缓解:
class FragmentFactory {
public WidgetFragment buildWidgetFragment() {
return new WidgetFragment();
}
}
但是,在某些时候,有人认为这可能适用于应用IoC和DI模型。
在Activity或Fragment中有很多做DI的例子,但到目前为止,我还没有找到任何使用DI模型创建正确的Activity或Fragment的例子。
是否可以使用RoboGuice或Dagger2?
若然,怎么样?
还有其他替代方案吗?