片段和工厂方法

问题描述 投票:6回答:3

使用Factory构建片段的目的是什么? Android Studio提供了一些样板代码生成,并在创建片段时提供工厂方法。

那个目的是什么?收益是多少?

android
3个回答
7
投票

使用静态工厂方法不仅适用于片段,我还使用它来创建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;
   }
}

3
投票

静态工厂方法允许我们初始化和设置新的片段,而无需调用其构造函数和其他setter方法。为片段提供静态工厂方法是很好的做法,因为它封装和抽象了从客户端设置对象所需的步骤。

http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html


1
投票

Fragment必须具有不带参数的构造函数。那是因为Android会调用默认构造函数来重新创建片段。如果你没有传入参数,那么你不需要构造函数或静态工厂方法(AKA,虚拟构造函数)。

© www.soinside.com 2019 - 2024. All rights reserved.