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:
Does this make sense? If not, please give good reasons for why you think so. An alternative solution is also appreciated.
Thanks
Marc
Static singleton void method could be replaced with: Dependency. Resolve<IFoo>(). DoSomething();
I've a lot of (abstract) factories and they're usually implemented as singletons. Usually for the convenience of not having to pass them through layers who really have no business with using or knowing these factories.
The true, non monobehaviour singleton can't really be destroyed or reinitialized as the static field is read only. If you need this you have to do the usual singleton approach with a normal private static variable. To force a reinitialization you just add a method "Destroy" which sets the static reference to "null".
The purpose of the Singleton Design pattern is to return the same object over and over to the caller. Singleton would be useful when you need to have an access to same object in the different part of an application.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With