Q
片段和工厂方法
4
A
回答
3
使用静态工厂方法不只是片段,我用它来创建意图,适配器和其他类也是如此。通过这种方法,您只需控制对象创建。
其中一个很好的优点是你只需通过封装捆绑键来增加内聚力。
class FragmentFoo extends Fragment{
}
当你想束从外部
// Activity Foo
Bundle bundle = new Bundle();
bundle.putString("name","Foo");
Fragment fragment = new FragmentFoo();
fragment.setArgs(bundle);
发送到这个片段提取这个名字,你需要使用“名”在片段密钥为好,如果你把它当作硬编码,你可能会有一些错误,错别字。所以你可以使用一个常量来确保你不会输入错字。但在这种情况下,你需要把它放在可以看到它的地方。有些人创建了另一个班级,以便保留所有非常难看和难以维护的内容,有些将关键点放在片段中,并将其公开并在任何地方使用,
通过静态工厂方法,您可以将所有内容片段并且不需要公开。谁需要使用这个片段就会清楚它的需求,也不需要知道密钥是什么。只需发送所需的参数就足够了。
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
静态工厂方法允许我们初始化和设置新的Fragment,而无需调用其构造函数和其他setter方法。为碎片提供静态工厂方法是一种很好的做法,因为它封装并提取了从客户端设置对象所需的步骤。
http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html
0
片段必须有一个没有参数的构造函数。这是因为Android会调用默认的构造函数来重新创建片段。如果你没有传入参数,那么你不应该需要构造函数或静态工厂方法(AKA,虚拟构造函数)。
相关问题
- 1. $ rootScope和工厂方法
- 2. 和Spring工厂方法
- 3. 工厂方法VS工厂对象
- 4. 静态工厂方法vs工厂
- 5. Java工厂方法
- 6. 在工厂方法
- 7. 抽象工厂和工厂方法可以一起使用吗?
- 8. 从子类工厂方法PHP调用超类工厂方法
- 9. 纱厂及片段
- 10. Flex AS3 - 继承和工厂方法
- 11. Spring 3 @Component和静态工厂方法
- 12. 数据库抽象和工厂方法
- 13. 简单框架和工厂方法
- 14. AutoMapper静态工厂方法
- 15. 抽象类工厂方法
- 16. 使用工厂方法
- 17. 静态工厂方法(Spring)
- 18. 调用工厂方法
- 19. Java工厂方法缓存
- 20. 静态工厂方法
- 21. AngularJS工厂 - 从方法
- 22. 工厂方法实施
- 23. Spring注解工厂方法
- 24. 静态工厂方法
- 25. Angularjs工厂方法实现
- 26. 代码工厂方法
- 27. Autofac工厂静态方法
- 28. 通用工厂方法
- 29. 调用Javascript工厂方法
- 30. 工厂方法模式
我想这是有道理的。如果要使用相同的参数而不是默认值创建Fragment,但由于Fragments的工作方式(Bundles通过配置更改保留数据),因此无法使用参数化的构造函数。 – EpicPandaForce 2014-11-24 09:15:24