Creating services and contracts
Imagine you’re building a 3D adventure game where your player explores a given area looking for loot. Since your game has several systems that need to be efficiently accessible from different parts of your project, you think singletons may be the right solution. However, you already know that too many singletons running around your code may be problematic, so you look for a way to keep track of the different systems under a common umbrella using a Service Locator!
If you’ve ever run into a service locator structure in the wild, you might have had trouble seeing through the elaborate setups, builders, lazy loading, bootstrapping, and general over-architected fluff that surrounds the core of what the pattern actually does. To avoid getting lost in the forest without seeing any beautiful trees, we’re going to lay out a statically accessible service locator class to get the hang of what makes this pattern so simple and usable (and...