所以,总结一下。
该模式称为静态工厂方法,例如在此处进行了描述:如何使用“静态工厂方法”而不是构造函数?
在最简单的形式中,它看起来像这样:
class A {
public static A newA() {
return new A();
}
private A(){}
}
您的示例稍微复杂一些,因为它包含用于调用构造函数的计算参数
public class A {
private A(int param1, String param2) {}
public static A createFromCursor(Cursor c) {
// calculate param1 and param2 from cursor
return new A(param1, param2);
}
}
使用这种方式创建新对象的目的可能是需要在每次new A(params)
直接调用之前重复计算。所以它只是避免重复自己,实现这一点的最简单方法是创建一个方法。
此外,使用相同的方式,您可以提供更多选项来创建new A
. 例如,您可以更改计算的方式:
public static A createFromCursorDifferently(Cursor c) {
// calculate param1 and param2 from cursor in different way
return new A(param1, param2);
}
然后你可以将相同的参数传递给这个方法,结果会有所不同(因为方法名称不同)。
当然,您可以new A
使用与以前相同的构造函数从任何其他参数创建您的:
public static A createFromObject(Object o) {
// calculate param1 and param2 from object
return new A(param1, param2);
}
因此,与仅使用构造函数相比,静态工厂方法有更多的可能性。