【发布时间】:2015-11-28 18:23:26
【问题描述】:
我已经阅读了几本关于不同 DI 框架的书籍,并且看到了“reify”或“reified”(过去时)这个术语,但我无法牢牢掌握代码的实际含义——明智的。
维基百科的定义说明
使(抽象的)更具体或更真实。
我还阅读了What do “reify” and “reification” mean in the context of (functional?) programming?,这在编程上下文中证实了上述定义。
但我无法想象这在代码中是如何应用的(在 DI 的上下文中)。问题的原因是我试图通过查看一些 HK2 源代码来调试堆栈跟踪,我看到变量/方法如 reified 和 sn-ps 如 if (!reified)。
所以我想获得一个代码示例,说明什么时候没有具体化以及什么时候/如何具体化,并且可能更好地解释上述定义如何在 DI 的上下文中应用.
注意:虽然这个问题被标记为 hk2 和 cdi,但我想任何了解 DI 的人都可以回答这个问题,因为我不认为这个术语与Java DI。我在一本关于 Ninject(一个 C# 框架)的书中看到了这个术语。
【问题讨论】:
-
正如this clojure site 所说,“我们使用 reify 来创建符合特定协议(或 Java 接口)的对象实例”。所以这可能意味着在运行时创建一个具体的对象作为依赖。
标签: hk2 cdi dependency-injection cdi hk2