我使用Java的大部分经验都是在课堂设置中,编辑我自己的代码。我终于冒险进入破译别人代码的令人兴奋的世界,我对此感到疑惑:
public class MyClass {
// Some fields here
// A constructor there
// Setters and getters abound
public static MyClass create() {
return new MyClass();
}
}
我想知道这种方法的目的是什么。写MyClass foo = new MyClass();
而不是写MyClass foo = MyClass.create();
似乎更麻烦。这是我不知道的某种Java习语吗?完全没必要吗?在构造函数采用任何参数的类中,它可能在某种程度上更有用吗?这笔交易是什么?
谢谢!
答案 0 :(得分:0)
这是一个非常有用的习语,静态工厂方法。它可以完全控制新实例的创建,无论它是一个不同的实例,一个缓存的实例等。只有构造函数设置为private才有意义。
public class MyClass {
private MyClass() {}
public static MyClass create() {
return new MyOtherClass();
}
private static class MyOtherClass extends MyClass {
...
}
}
答案 1 :(得分:-1)
静态工厂方法。
构造函数通常是私有的,这样可以通过一种方法控制新对象的创建。
进一步阅读静态构建器类。