Я прочитал несколько книг по различным рамкам DI, и я вижу, что вокруг меня выбрали термин «reify» или «reified» (прошедшее время), но я могу 'твердо понять, что на самом деле означает кодовое.Что именно означает «reify» в контексте инъекции зависимостей
состояниеВикипедию определения
замыкающие (что-то абстрактное) более конкретное или реальное.
Я также прочитал What do “reify” and “reification” mean in the context of (functional?) programming?, что подтверждает вышеуказанное определение в контексте программирования.
Но я не могу получить изображение в голове, как это применяется в коде (в контексте DI). Причина в том, что я пытаюсь отлаживать stacktrace, глядя на некоторый исходный код HK2, и вижу переменные/методы, такие как reified
и фрагменты, такие как if (!reified)
.
Итак, я хотел бы получить пример кода, когда что-то есть не reified и когда/как оно становится reified, и, возможно, немного лучше объясняет, как это определение применяется в контексте DI.
Примечание: Хотя вопрос помечен hk2 и cdi, я думаю, этот вопрос можно ответить любым осведомленным в DI, так как я не думаю, что термин строго привязан к Java DI. Я видел термин, используемый в книге о Ninject (C# framework).
Как [это Clojure сайт] (HTTP : //spootnik.org/entries/2014/01/25_poor-mans-dependency-injection-in-clojure.html), мы используем reify для создания экземпляра объекта, выполняющего определенный протокол (или интерфейс Java) " , Таким образом, это, вероятно, означает создание конкретного объекта во время выполнения, который будет использоваться в качестве зависимости. –