在时下流行的轻量级容器都使用了一个共同的模式来组装应用程序所需的服务,我把这个模式称为 Dependency Injection,它可以有效地替代 Service Locator 模式。在开发应用程序时,两者不相上下,但我认为 Service Locator 模式略有优势,因为它的行为方式更为直观。但是,如果你开发的组件要交给多个应用程序去使用,那么 Dependency Injection 模式会是更好的选择。
如果决定使用 Dependency Injection 模式,这里还有几种不同的风格可供选择。我建议首先考虑构造子注入;如果遇到了某些特定的问题,再改用设值方法注入。如果要选择一个容器,在其之上进行开发,我建议选择同时支持这两种注入方式的容器。
Service Locator 模式和 Dependency Injection 模式之间的选择并不是最重要的,更重要的是:应该将服务的配置和应用程序内部对服务的使用分离开。
容器技术的出现改变了软件交付的思维,微服务和Serverless虽然没有减少软件生命周期中的环节,但确实改变了下游软件部署和维护的理念,提高了软件开发人员的效率。生活在这个信息爆炸、技术飞速更迭的时代很烦恼也很幸福。这就是我们所在的时代,我们正在亲身经历着未来。