依赖注入(DI)深入探究
1. 接口注入
接口注入有其独特的优势,它允许开发者为接受依赖的方法自定义名称。这样一来,我们可以使用自然、特定用途的名称,这些名称简洁且具有自解释性。例如, load(Cargo) 方法就比 setCargo(Cargo) 更直观。
不过,接口注入的缺点也十分明显。它极其冗长,为每个依赖创建一个新接口是相当浪费的,而且类定义后面长长的实现接口列表也不美观。这些接口会使类签名变得杂乱,分散我们对其他可能更感兴趣的接口的注意力。实际上,已经停用的 Apache Avalon 是唯一提供接口注入的 DI 库,这也使得接口注入成为一个不太有吸引力的选择,在很大程度上,它已经过时了。
2. 方法装饰(AOP 注入)
方法装饰是依赖注入的一种有趣变体。它的核心思想是将方法而非对象作为注入的目标。通常情况下,当这些方法被调用时,它们会返回注入器提供的值,而不是其正常的值。这需要从根本上重新定义方法的行为,一般通过某种拦截机制来实现,而 AOP 框架常常提供这种拦截手段。
方法装饰得名于装饰器设计模式。它在某些特定情况下非常有用,虽然使用场景相对较少,但如果应用得当,它可以成为一种强大的设计模式。下面通过一个例子来说明:
package candy;
public class Dispenser {
public Pez dispense() {
return ...;
}
}
public class Pez { .. }
<
超级会员免费看
订阅专栏 解锁全文
171

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



