Запитання з тегом «dependency-injection»

Dependency Injection - це схема дизайну, де залежності (екземпляри об'єктів, властивостей) компонента встановлюються через конструктор (и), методи або поля (властивості). Це особлива форма більш загальної інверсії залежності.

2
Ін'єкція залежності від статичних методів
Я провів сьогодні цікаву дискусію з іншим розробником про те, як наблизитись до класу методом, який приймає рядок та виводить рядок. Уявіть щось на зразок наступного, яке повністю складено з метою прикладу public string GetStringPart(string input) { //Some input validation which is removed for clarity if(input.Length > 5) return input.Substring(0,1); …

5
Які переваги введення залежності залежно від випадків, коли майже кожному потрібен доступ до загальної структури даних?
Є багато причин, через які глобальні люди є злими в ООП. Якщо кількість або розмір об'єктів, які потребують спільного використання, занадто великі, щоб ефективно їх передати в параметрах функції, зазвичай кожен рекомендує введення залежностей замість глобального об'єкта. Однак у випадку, коли майже всім потрібно знати про певну структуру даних, чому …

2
Проблема з розумінням слова «шов»
Я читаю "Ін'єкцію залежності в .NET" від Марка Семана (це фантастично і повинно бути), і автор часто використовує слово "шов". Але я не можу зрозуміти, що це означає. Ось приклад використання цього слова: Глава 7 пояснює, як складати об'єкти в різних конкретних рамках, таких як ASP.NET MVC, WPF, WCF тощо. …

2
Моделі анемічних доменів та введення доменних служб
Модель анемічного домену описується Мартіном Фаулером як анти-модель у дизайні, керованому доменом. Щоб мати ділову логіку на доменних моделях, часто використовують доменні служби. Але введення доменних служб у доменні моделі вважається шкідливим Вон Верноном (див. "Впровадження дизайну, керованого доменом", Сторінка 387). На мою думку, ці думки суперечливі, чи правда це? …

7
Чи повинні абстракції зменшити читабельність коду?
Хороший розробник, з яким я працюю, нещодавно розповів мені про деякі труднощі, які він мав у реалізації функції в якомусь коді, який ми успадкували; Він сказав, що проблема полягає в тому, що коду було важко дотримуватися. З цього моменту я заглянув у продукт і зрозумів, як важко бачити шлях коду. …

2
Чи є докази того, що використання ін'єкцій залежностей покращує результати в розробці програмного забезпечення?
Незважаючи на його популярність, чи є якісь емпіричні докази, які показують, що залежність від ін'єкцій (та / або використання контейнера DI) допомагає, скажімо, зменшити кількість помилок, покращити ремонтопридатність або збільшити швидкість розвитку програмних програм у реальному житті?

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

8
Чи варто введення залежності залежно від UnitTesting
Враховуючи конструктор, який ніколи і ніколи не повинен буде використовувати будь-які різні реалізації декількох об'єктів, які він ініціалізує, чи все-таки практичним є використання DI? Зрештою, ми можемо все ж захотіти провести тест. Клас, про який йде мова, ініціалізує декілька інших класів у своєму конструкторі, і класи, які він використовує, досить …

5
Коли використовувати інтерфейси (тестування одиниць, IoC?)
Я підозрюю, що тут допустив помилку школяра, і шукаю роз'яснення. Багато класів у моєму рішенні (C #) - наважуся сказати, що більшість - я закінчив написати відповідний інтерфейс для. Наприклад, інтерфейс "ICalculator" та клас "Калькулятор", який реалізує його, хоча я ніколи не зможу замінити цей калькулятор іншою реалізацією. Крім того, …

2
Чи DDD-Lite є мовою для введення залежності?
Я натрапив на розмову Грега Янга 7 Причини, чому DDD-проекти провалюються, де він згадує те, що він називає DDD-Lite о 7:20. Підсумовуючи, він, по суті, каже, що деякі використовують DDD як мови мовлення (сутності, сховища, об'єкти цінності, послуги тощо), не роблячи нічого іншого, пов’язаного з DDD. Він постулює 60% або …

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. У добрі дні Widgetwolud буде оголошений як поле в Foobar, або, можливо, як розумний вказівник, якщо потрібна поліморфна поведінка, і вона буде ініціалізована в конструкторі: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or …

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, в який, схоже, потрапляють усі. Чи є сенс контейнера IoC насправді просто …

5
Чи можу я використовувати ін'єкційну залежність без порушення інкапсуляції?
Ось моє рішення та проекти: BookStore (рішення) BookStore.Coupler (проект) Bootstrapper.cs BookStore.Domain (проект) Створити BookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (проект) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (проект) Global.asax BookStore.BatchProcess (проект) 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.