Can the Singleton be replaced by Factory?

Posted by lostiniceland on Stack Overflow See other posts from Stack Overflow or by lostiniceland
Published on 2010-05-04T11:11:18Z Indexed on 2010/05/04 11:38 UTC
Read the original article Hit count: 287

Hello Everyone

There are already quite some posts about the Singleton-Pattern around, but I would like to start another one on this topic since I would like to know if the Factory-Pattern would be the right approach to remove this "anti-pattern".

In the past I used the singleton quite a lot, also did my fellow collegues since it is so easy to use. For example, the Eclipse IDE or better its workbench-model makes heavy usage of singletons as well. It was due to some posts about E4 (the next big Eclipse version) that made me start to rethink the singleton.

The bottom line was that due to this singletons the dependecies in Eclipse 3.x are tightly coupled.

Lets assume I want to get rid of all singletons completely and instead use factories.
My thoughts were as follows:

  • hide complexity
  • less coupling
  • I have control over how many instances are created (just store the reference I a private field of the factory)
  • mock the factory for testing (with Dependency Injection) when it is behind an interface
  • In some cases the factories can make more than one singleton obsolete (depending on business logic/component composition)

Does this make sense? If not, please give good reasons for why you think so. An alternative solution is also appreciated.

Thanks

Marc

© Stack Overflow or respective owner

Related posts about design-patterns

Related posts about singleton