【发布时间】:2013-09-25 02:46:27
【问题描述】:
标题几乎概括了它。
我有一个工厂类,它会在调用create() 方法时构造另一个类的实例。我已将我的工厂类设置为单例,这会强制调用看起来像这样:
SomeClass clazz = (SomeClass) FactoryClass.getInstance().create(ENUM.TYPE);
这保证了我的工厂是线程安全的,但可能会导致阻塞等。
如果我的工厂不是单例,我可以改为将我的 .create() 方法设置为 static,这将获得类似的结果。
SomeClass clazz = (SomeClass) FactoryClass.create(ENUM.TYPE);
假设多个线程可能会尝试通过 FactoryClass 创建对象实例,哪个更好?难道这两种方法都不能提供相同级别的线程安全吗?
【问题讨论】:
-
线程安全将来自所有在本地创建的必要对象,即。在方法体中。
-
单例方法允许您在工厂的多个实现之间切换。
-
@Detheroc 在多个工厂中?我不确定我是否理解,抱歉。
-
除了@Detheroc:单例方法允许您将工厂的(该)实例传递给另一个方法。
-
@SnakeDoc 错字,已更正:)
标签: java singleton factory-pattern