1、什么是静态工厂方法
在java中,获取一个类最简单的方法就是使用new关键字,通过构造函数来实现对象的创建。
最常见的:
Date date = new Date();
不过在实际开发中,也会经常遇到另一种获取实例的方法:
Calendar calendar = Calendar.getInstance();
Integer number = Integer.valueOf("3");
Fragment fragment = MyFragment.newIntance();
像这样不通过new,而是用一个静态方法来对外提供自身实例的方法,即为我们所说的静态工厂方法。
那么new究竟做了什么?
当我们使用new来构造一个新的实例时,告诉jvm我们需要一个新的实例。jvm就会自动在内存中开辟一片空间,然后调用构造函数来初始化成员变量,最终把引用返回调用方。
2、静态工厂方法的优势在哪里
1)静态工厂方法可以有名字。对于构造方法来说,构造方法只有一个名字,那就是类名,只能通过参数的类型和数量多少去区分构造方法。而静态工厂方法可,可以根据方法的实际功能去定义名字,能有效使用方法。
2)不用每次被调用时都创建新的对象。有时候外部调用者只需要拿到一个实例,而不关心该实例是否是新的,那么这个时候可以提供一个单例,如果使用工厂方法,就可以很容易的在内部控制,防止创建不必要的对象,减少开销。
3)还有一些,但不是很重要的。。。
3、例子
// 创建一个测试数据
User tester = new User();
tester.setName("隔壁老张");
tester.setAge(16);
tester.setDescription("我住隔壁我姓张!");
// use tester
bindUI(tester);
//每次创建一个实例,还要往里面添加数据,会比较麻烦
//下面使用静态工厂方法
static class User{
String name ;
int age ;
String description;
public static User newTestInstance() {
User tester = new User();
tester.setName("隔壁老张");
tester.setAge(16);
tester.setDescription("我住隔壁我姓张!");
return tester;
}
}
// 创建一个测试数据
User tester = User.newTestInstance();
// use tester
bindUI(tester);
原文:https://www.cnblogs.com/ruanjuyang/p/12199108.html