Вопросы с тегом «dependency-injection»

Внедрение зависимостей - это шаблон проектирования, в котором зависимости (экземпляры объектов, свойства) компонента устанавливаются с помощью конструктора (ов), методов или полей (свойств). Это особая форма более общего обращения зависимостей.

2
Внедрение зависимостей против статических методов
Сегодня у меня была интересная дискуссия с другим разработчиком о том, как подойти к классу с помощью метода, который принимает строку и выводит строку. Представьте себе что-то вроде следующего, полностью составленное для примера. public string GetStringPart(string input) { //Some input validation which is removed for clarity if(input.Length > 5) return …

5
Каковы преимущества внедрения зависимостей в тех случаях, когда почти всем нужен доступ к общей структуре данных?
Есть много причин, почему глобалы злы в ООП. Если число или размер объектов, нуждающихся в совместном использовании, слишком велик, чтобы их можно было эффективно передать в параметрах функции, обычно все рекомендуют внедрение зависимостей вместо глобального объекта. Однако в случае, когда почти каждый должен знать об определенной структуре данных, почему внедрение …

2
Проблема с пониманием слова «шов»
Я читаю «Внедрение зависимостей в .NET» Марка Симанна (это фантастика, и обязательно должна иметь), и автор часто использует слово «шов». Но я не могу понять, что это значит. Вот пример использования этого слова: Глава 7 объясняет, как составлять объекты в различных конкретных средах, таких как ASP.NET MVC, WPF, WCF и …

2
Анемичные доменные модели и внедрение доменных сервисов
Модель анемичного домена описана Мартином Фаулером как анти-шаблон в дизайне, управляемом доменом. Чтобы иметь бизнес-логику в доменных моделях, часто используются доменные службы. Но внедрение доменных служб в доменные модели считается вредным для Вона Вернона (см. «Внедрение доменного дизайна», стр. 387). На мой взгляд, эти мнения противоречивы, правда ли это? Как …

7
Должны ли абстракции снижать читабельность кода?
Хороший разработчик, с которым я работаю, недавно рассказал мне о некоторых трудностях, с которыми он столкнулся при реализации функции в некотором коде, который мы унаследовали; он сказал, что проблема была в том, что за кодом было трудно следовать. Исходя из этого, я посмотрел вглубь продукта и понял, как трудно было …

2
Есть ли доказательства того, что использование внедрения зависимостей улучшает результаты в разработке программного обеспечения?
Несмотря на его популярность, есть ли эмпирические данные, которые показывают, что Dependency Injection (и / или использование DI-контейнера) помогает, скажем, уменьшать количество ошибок, улучшать удобство обслуживания или увеличивать скорость разработки в реальных программных проектах?

1
Практика внедрения зависимостей / контейнера IoC при написании фреймворков
Я использовал различные контейнеры IoC (Castle.Windsor, Autofac, MEF и т. Д.) Для .Net в ряде проектов. Я обнаружил, что они часто подвергаются насилию и поощряют ряд плохих практик. Существуют ли какие-либо устоявшиеся практики использования контейнера IoC, особенно при предоставлении платформы / инфраструктуры? Моя цель как разработчика фреймворка - сделать код …

8
Стоит ли внедрение зависимостей за пределы UnitTesting?
Учитывая конструктор, который никогда не будет использовать какие-либо разные реализации нескольких объектов, которые он инициализирует, все еще практично использовать DI? В конце концов, мы все еще можем захотеть провести юнит тест. Рассматриваемый класс инициализирует несколько других классов в своем конструкторе, и классы, которые он использует, довольно специфичны. Он никогда не …

5
Когда использовать интерфейсы (модульное тестирование, IoC?)
Я подозреваю, что допустил ошибку школьника и ищу уточнения. Многие классы в моем решении (C #) - осмелюсь сказать, что большинство - я закончил тем, что написал соответствующий интерфейс для. Например, интерфейс «ICalculator» и класс «Calculator», который его реализует, хотя я вряд ли заменю этот калькулятор другой реализацией. Кроме того, …

2
Является ли DDD-Lite языком шаблонов для внедрения зависимостей?
Я наткнулся на выступление Грега Янга 7 Причины, по которым проекты DDD терпят неудачу, когда он упоминает нечто, что он называет DDD-Lite, в 7:20. Подводя итог, он в основном говорит, что некоторые используют DDD в качестве шаблонных языков (сущностей, репозиториев, объектов значений, сервисов и т. Д.), Не делая ничего другого, …

3
Продайте меня на контейнерах IoC, пожалуйста
Я видел несколько рекомендованных к использованию контейнеров IoC в коде. Мотивация проста. Возьмите следующий введенный код зависимости: class UnitUnderTest { std::auto_ptr<Dependency> d_; public: UnitUnderTest( std::auto_ptr<Dependency> d = std::auto_ptr<Dependency>(new ConcreteDependency) ) : d_(d) { } }; TEST(UnitUnderTest, Example) { std::auto_ptr<Dependency> dep(new MockDependency); UnitUnderTest uut(dep); //Test here } В: class UnitUnderTest { …

5
C ++: должен ли класс владеть или соблюдать свои зависимости?
Скажем, у меня есть класс, Foobarкоторый использует (зависит от) класса Widget. В Widgetстарые добрые времена wolud объявлялся как поле в Foobarили, может быть, как умный указатель, если требовалось полиморфное поведение, и он был бы инициализирован в конструкторе: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // …

4
Нужно ли вводить зависимости в ctor или для метода?
Рассмотреть возможность: public class CtorInjectionExample { public CtorInjectionExample(ISomeRepository SomeRepositoryIn, IOtherRepository OtherRepositoryIn) { this._someRepository = SomeRepositoryIn; this._otherRepository = OtherRepositoryIn; } public void SomeMethod() { //use this._someRepository } public void OtherMethod() { //use this._otherRepository } } против: public class MethodInjectionExample { public MethodInjectionExample() { } public void SomeMethod(ISomeRepository SomeRepositoryIn) { //use SomeRepositoryIn …

3
Я получаю инъекцию зависимости, но может ли кто-нибудь помочь мне понять необходимость контейнера IoC?
Я прошу прощения, если это кажется еще одним повторением вопроса, но каждый раз, когда я нахожу статью, касающуюся этой темы, в основном это просто говорит о том, что DI. Итак, я получаю DI, но я пытаюсь понять потребность в контейнере IoC, в который, кажется, все входят. Действительно ли смысл контейнера …

5
Могу ли я использовать Dependency Injection, не нарушая инкапсуляцию?
Вот мое решение и проекты: Книжный магазин (решение) BookStore.Coupler (проект) Bootstrapper.cs BookStore.Domain (проект) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (проект) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (проект) Global.asax BookStore.BatchProcesses (проект) Program.cs Bootstrapper.cs : public static class Bootstrapper.cs { // I'm using SimpleInjector as my DI Container public static void Initialize(Container container) { container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>), …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.