标题几乎概括了它。
我有一个工厂类,当它的create()
方法被调用时,它将构造另一个类的实例。我已将我的工厂类设置为单例,这迫使调用看起来像这样:
SomeClass clazz = (SomeClass) FactoryClass.getInstance().create(ENUM.TYPE);
这保证了我的工厂是线程安全的,但可能会导致阻塞等。
如果我的工厂不是单例,我可以设置我的.create()
方法 be static
,这将获得类似的结果。
SomeClass clazz = (SomeClass) FactoryClass.create(ENUM.TYPE);
假设多个线程可能会尝试通过 FactoryClass 创建对象实例,哪个更好?难道这两种方法都不能提供相同级别的线程安全吗?