依赖注入:概念、模式与实际应用
1. 服务定位器模式
服务定位器模式是一种工厂模式,它是一个第三方对象,负责生成一个完全构建好的对象图。在典型情况下,服务定位器用于查找外部源发布的服务,这些外部源可能位于同一应用程序、机器或局域网中,也可能不在。
服务定位器的工作方式如下:
Emailer emailer = (Emailer) new ServiceLocator().get("Emailer");
在这个例子中,我们向服务定位器传递了一个键 “Emailer”,以此告知定位器我们需要一个 Emailer 对象。这与只能生产一种服务的工厂有显著不同,服务定位器是一种可以生产任何类型服务的工厂,有助于减少大量重复的工厂代码。
再看一个应用服务定位器模式的例子:
Emailer emailer = (Emailer) new ServiceLocator()
.get("JapaneseEmailerWithPhoneAndEmail");
Java 命名和目录接口(JNDI)是服务定位器模式的一个很好的例子,常用于应用服务器在启动时注册资源,以及已部署的应用程序后续查找这些资源。
然而,服务定位器作为一种工厂,存在可测试性和共享状态的问题。用于标识服务的键是不透明的,使用起来可能会令人困惑。如果键绑定不当,可能会创建错误类型的对象,而这种错误只有在运行时才能发现。此外,在标识符中嵌入服务信息的做
依赖注入原理与最佳实践
超级会员免费看
订阅专栏 解锁全文
1514

被折叠的 条评论
为什么被折叠?



