我想在Java中正确实现工厂模式。我已经这样做了(下面的代码),有人可以指出这是一种“正确的”方式,还是任何设计缺陷?
我的想法/限制是:
self
代码如下:
public class MyFactory {
private static MyFactory self;
private MyFactory() {
synchronized (self) {
if (self == null) {
self = new MyFactory();
}
}
}
}
这段代码会不会给我带来问题?
替代方案就像
public class MyFactory {
private static MyFactory self = new MyFactory();
}
哪一种更好,这些类型的懒惰与急切实例化的考虑因素是什么?
答案 0 :(得分:1)
一个批评是能够子类化要求和单例要求是不一致的 - 如果你想能够子类化工厂,你将不得不使构造函数不是私有的,这使得工厂不是单例。