英文原文:
https://blog.ploeh.dk/2014/06/10/pure-di/
Pure DI是没有DI容器的依赖注入。
TL;DR:术语Pure DI取代了术语Poor Man’s DI.
这篇帖子实质上是提出了一种术语的改变。在我关于依赖注入(DI)的书中,我仔细地解释了纯形式的依赖注入的原理和模式,而不涉及依赖注入容器。只有在第4部分中,您才能广泛地了解各种DI容器,即使在这里,您也了解到DI原则和模式是如何映射到各种容器的。
DI是一组原则和模式;DI容器是可选的帮助库。
然而,当我写这本书的时候,我犯了一个错误(我可能犯了很多错误,但在这里,我将解决一个具体的错误):在书中,没有DI Containers的DI称为穷人的DI(Poor Man’s DI)。这是有原因的,但最终,我了解到Poor Man’s DI是糟糕的术语(双关语)。问题是它听起来有点贬义,或者至少没有吸引力;它也没有传达这样的信息,即在许多情况下,没有DI容器的DI比有DI容器的DI更好-相反,它听起来没有那么好。
除了我的书之外,我还尝试在不同的文章中描述从Poor Man’s DI到使用DI Container所涉及的权衡:
根据我收到的反馈,我的读者似乎真的很喜欢他们的DI容器。也许他们只是害怕另一种选择,因为它被称为穷人的DI。
出于这些原因,从现在开始,我将停止使用穷人的DI(Poor Man’s DI)这个术语,取而代之的是使用pure DI这个术语。纯依赖注入是指使用依赖注入原则和模式,而不是依赖注入容器;这是我在过去的一年半里一直在做的事情,也是在我写书之前的很多年里一直在做的事情。
P.S. 2018-04-15.命名很难。当我想到Pure DI的替代名称时,我已经在将重点转向函数式编程的过程中,但在那时,我仍然没有意识到引用透明性在像Haskell这样强调纯函数的严格函数式语言中扮演着多么重要的角色。
不幸的是,Pure DI所暗示的纯洁性与这个词的功能意义上的纯洁性没有任何关系。事实上,DI让一切都变得不纯洁。
当我决定使用纯DI这个词时,我这么做是因为它听起来有点像穷人的DI,这样就很容易记住。此外,我选择纯这个词是因为它可以表示本质,我认为,从某种意义上说,纯依赖可以看作是柏拉图式的依赖注入的理想。最后,纯净听起来像是令人向往的东西,因此,由于这些原因,我相信它会是一个好词。人们似乎已经学会了它,所以从这个意义上说,我认为我选择了正确的词,但如果从函数式编程术语的角度来看,它可能会令人困惑。
纯DI与纯函数无关。