java - Should Factory Class' create() method be static? Or make Factory Class singleton? -


title pretty sums up.

i have factory class construct instance of class when it's create() method called. have setup factory class singleton, forces invokation such:

someclass clazz = (someclass) factoryclass.getinstance().create(enum.type); 

this guarantees factory thread safe, may cause blocking, etc.

if factory not singleton, instead set .create() method static, achieve similar results.

someclass clazz = (someclass) factoryclass.create(enum.type); 

assuming multiple threads may attempt create instances of objects via factoryclass, better? don't both ways of doing provide same level of thread safety?

neither has impact on thread-safety. threading issues reside in create method's implementation. static method create instance (or singleton) , call instance method there no difference.

exposing singleton api choice in how want , feel.

that said, static methods more challenging mock in testing environment might consider.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -