ServiceLocator for easy and central access to replaceable parts
You have some clean looking code there, but there's a huge problem with Service Locators. They're hidden dependencies. If I reference your class from elsewhere, I'm going to be really confused about the exceptions I'm going to get when I try to use it. 


  Where is this null EmailService exception coming from?! WTF???


It's much better to use proper constructor injection of dependencies. That makes it crystal clear what is needed to make your class work.