使用Factory构建片段的目的是什么? Android Studio提供了一些样板代码生成,并在创建片段时提供工厂方法。
那个目的是什么?收益是多少?
使用静态工厂方法不仅适用于片段,我还使用它来创建intent,adapter和其他类。通过这种方法,您只需控制对象创建。
一个很好的优点是你只需通过封装束密钥来增加内聚力。
class FragmentFoo extends Fragment{
}
当您想从外部向此片段发送包时
// Activity Foo
Bundle bundle = new Bundle();
bundle.putString("name","Foo");
Fragment fragment = new FragmentFoo();
fragment.setArgs(bundle);
要提取此名称,您还需要在片段中使用“name”键,如果您将其用作硬编码,则可能会出现一些错误,错别字。因此,您可以使用常量以确保您不会输入拼写错误。但在这种情况下,你需要把它放在两个都可以看到的地方。有些人创建了另一个类,以便保留所有非常丑陋且难以维护的内容,有些将密钥放入片段并公开并在任何地方使用它,
通过静态工厂方法,您可以简单地将所有内容保存在片段中,而无需公开。谁需要使用这个片段将清楚地知道它需要什么,也不需要知道什么是键。只需发送所需的参数就足够了。
class FragmentFoo extends Fragment{
private static final String KEY_NAME = "name";
private String name;
public static Fragment newInstance(String name){
Bundle bundle = new Bundle();
bundle.putString(KEY_NAME, "name");
Fragment fragment = new FragmentFoo();
fragment.setArgs(bundle);
return fragment;
}
}
静态工厂方法允许我们初始化和设置新的片段,而无需调用其构造函数和其他setter方法。为片段提供静态工厂方法是很好的做法,因为它封装和抽象了从客户端设置对象所需的步骤。
http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html
Fragment必须具有不带参数的构造函数。那是因为Android会调用默认构造函数来重新创建片段。如果你没有传入参数,那么你不需要构造函数或静态工厂方法(AKA,虚拟构造函数)。