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
I agree that it makes senses sometimes. However, it depends on what you’re building.
If you replace every single singleton with a factory just because its “better”, you’re doing it wrong imho.
It should serve a purpose. If you’re not going to mock, if you’re sure you only need one instance, etc than replacing is just “architectural mastrubation” 😉
Dont get me wrong, architecture is very important, but you shouldn’t overdo it.