gpt4 book ai didi

java - 工厂、单例、最佳实践

转载 作者:行者123 更新时间:2023-12-01 13:55:38 24 4
gpt4 key购买 nike

我想在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();
}

哪一个更好,这些类型的惰性实例化与急切实例化的考虑因素是什么?

最佳答案

一个批评是能够子类化要求和单例化要求是不一致的 - 如果您希望能够对工厂进行子类化,则必须使构造函数不是私有(private)的,这使得工厂不是单例化。

关于java - 工厂、单例、最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19647640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com