【发布时间】:2015-06-30 01:47:18
【问题描述】:
在 Effective Java 中,它提到“与构造函数不同,静态工厂方法不需要在每次调用时都创建新对象”。
class Car{
String color;
Boolean spoiler;
public Car(String s){
color=s;
spoiler = false;
}
public static Car redCar(){
return new Car("red");
}
}
在主类中:
Car c2 = Car.redCar();
Car c3 = Car.redCar();
c2 和 c3 是不同的对象。我没有得到“每次调用都不需要创建新对象”的上下文。
【问题讨论】:
-
看看什么是单例模式
-
你忘记了文章的重要部分:这允许不可变类(第 15 条)使用预先构造的实例,或者在构造实例时缓存实例,并重复分配它们以避免创建不必要的重复对象
-
您错过了不需要部分。您的实现每次都清楚地返回新实例。