3、依赖注入:概念、模式与实际应用

依赖注入原理与最佳实践

依赖注入:概念、模式与实际应用

1. 服务定位器模式

服务定位器模式是一种工厂模式,它是一个第三方对象,负责生成一个完全构建好的对象图。在典型情况下,服务定位器用于查找外部源发布的服务,这些外部源可能位于同一应用程序、机器或局域网中,也可能不在。

服务定位器的工作方式如下:

Emailer emailer = (Emailer) new ServiceLocator().get("Emailer");

在这个例子中,我们向服务定位器传递了一个键 “Emailer”,以此告知定位器我们需要一个 Emailer 对象。这与只能生产一种服务的工厂有显著不同,服务定位器是一种可以生产任何类型服务的工厂,有助于减少大量重复的工厂代码。

再看一个应用服务定位器模式的例子:

Emailer emailer = (Emailer) new ServiceLocator()
    .get("JapaneseEmailerWithPhoneAndEmail");

Java 命名和目录接口(JNDI)是服务定位器模式的一个很好的例子,常用于应用服务器在启动时注册资源,以及已部署的应用程序后续查找这些资源。

然而,服务定位器作为一种工厂,存在可测试性和共享状态的问题。用于标识服务的键是不透明的,使用起来可能会令人困惑。如果键绑定不当,可能会创建错误类型的对象,而这种错误只有在运行时才能发现。此外,在标识符中嵌入服务信息的做

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值