2009-05-09 3 views
1

Я в процессе написания рамки DI для PHP 5, и я пытался найти «официальные» определения некоторых слов относительно инъекции зависимостей. Некоторые из этих слов: «контекст» и «жизненный цикл». А также, что бы я назвал объект, который получил , создал/ввел? Наконец, в чем разница между компонентами и услугами, и какой термин (если либо) я должен назвать объектами, которые могут быть введены?Может кто-нибудь описать мне некоторые термины?

Я прочитал статью Мартина Фаулера и просмотрел другие каркасы DI (Phemto, Spring, Google Guice, Xyster и т. Д.), Но я хочу знать, что вы думаете. Благодаря!

+0

Это не реальный вопрос, сделать это сообщество вики, чтобы избежать закрытия, пожалуйста. Это может помочь задать более одного вопроса, сосредоточив внимание на каждой конкретной детали, чтобы получить правильные ответы. – lothar

ответ

2

Инъекция зависимостей (ДИ) в компьютерном программировании относится к процессу подачи внешней зависимости программному компоненту. Это конкретная форма инверсии управления, в которой инвертированное беспокойство является процессом получения необходимой зависимости.

  • жизненный цикл: синглтон, за просьбу, переходный .... как долго жить в контейнере
  • компоненты: Более простое определение может быть: Компонент является объект записывается в спецификацию. Не имеет значения, что спецификация: COM, Enterprise JavaBeans и т. Д., Если объект придерживается спецификации.
  • услуги: Термин сервис относится к дискретно определенному набору непрерывных и автономных бизнес-или технических функций.
  • контекст: разделение на уровне контейнера предоставленных реализаций потребителям. Например, золотые партнеры на зеленых страницах будут иметь скидку 15% на красные носки.

весело :)

+0

Спасибо, это именно то, что я искал! – 2009-05-09 18:43:25

1

Я не знаю, что существует «официальное» определение. Статья Фаулера была первой частью, которую я прочитал на DI. Если это недостаточно авторитетно для вас, я не вижу, как SO улучшится.

Что для вас значит? Какую часть документации вы прочитали? Вы пробовали писать с ним какие-либо приложения? Вы уже очень хорошо изучили это, если написали код с Spring и Guice. Если вы только что прочитали несколько статей, которые Google вернул, вам нужно сделать больше.

«Контекст» весной означает фабрику, используемую для создания объектов для вас. Обычно у меня есть одно приложение или веб-приложение. Мое приложение обычно является «контекстом», в котором создаются объекты.

«жизненный цикл» ничем не отличается от DI - это связано с тем, когда объект создан, инициализирован, использован и уничтожен.

Компоненты представляют собой данные и операции в одном программном артефакте. Услуги - это специальные виды компонентов, которые выполняют важные для бизнеса операции, обычно распространяемые по сети. Услуги обычно являются компонентами, но не все компоненты являются услугами. Они не синонимы.

Вы можете написать компоненты или услуги без рамки DI. Если это поможет вам называть компоненты инъецируемых объектов, будь моим гостем.

Мне любопытно: почему акцент на именах для этих вещей? Именование, безусловно, важно, но это не основная проблема с DI.

+0

Я понимаю основы инъекции зависимостей, но я хочу правильно использовать термины для моей реализации DI – 2009-05-09 17:59:47

+0

Я не знаю универсальной «правильной» точной терминологии. Почему, по-вашему, это так важно? Как вы думаете, страстные люди пострадали, потому что их определения достаточно официальны? Это аргумент в пользу байка, ожидающего своего служения, ИМО. – duffymo

+0

Это больше любопытства, чем что-либо еще, я не думал, что это большая сделка, чтобы спросить мнение других. – 2009-05-09 18:08:18