Global Access with the Service Locator Pattern
In the last chapter, we used the Flyweight pattern to create a resource-efficient sharing system for objects created in large (sometimes massive) batches. In this chapter, we’ll circle back to the very first topic of this book, global access, but instead of a Singleton solution, we’ll explore what the Service Locator pattern has to offer.
Scenarios where the Service Locator pattern shines are eerily similar to areas where a Singleton would be a potential solution – allowing a very select few services or systems to be accessible anywhere in your project. While this kind of freewheeling access should be extremely limited (for coupling and safety reasons we’ll discuss a little later), there are some use cases where a global service is a necessity (logging and data persistence come to mind). Think of the service locator as a wrapper for classes you would typically consider making into singletons – a...