«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); if(input.Substring(0,1) == "B") return input.Substring(0,3); return string.empty; } 문자열 …

5
거의 모든 사람이 공통 데이터 구조에 액세스해야하는 경우 종속성 주입의 이점은 무엇입니까?
OOP에서 글로벌 이 악한 이유는 많이 있습니다 . 공유가 필요한 객체의 수 또는 크기가 너무 커서 함수 매개 변수에서 효율적으로 전달할 수없는 경우 일반적으로 전역 객체 대신 의존성 주입을 권장 합니다. 그러나 거의 모든 사람이 특정 데이터 구조에 대해 알아야 할 경우 의존성 주입이 전역 객체보다 더 나은 이유는 무엇입니까? …

2
“완벽한”단어 이해에 문제
Mark Seemann의 "Dependency Injection in .NET"을 읽고 있는데, 필자는 종종 "seam"이라는 단어를 사용합니다. 그러나 나는 그것이 무엇을 의미하는지 이해할 수 없습니다. 이 단어를 사용하는 예는 다음과 같습니다. 7 장에서는 ASP.NET MVC, WPF, WCF 등과 같은 다양한 구체적인 프레임 워크에서 객체를 구성하는 방법에 대해 설명합니다. 모든 프레임 워크가 DI를 똑같이 잘 …

2
빈혈 도메인 모델 및 도메인 서비스 주입
빈혈 도메인 모델은 마틴 파울러 도메인 중심의 디자인에서 안티 패턴으로 설명되어 있습니다. 도메인 모델에 대한 비즈니스 로직을 갖기 위해 종종 도메인 서비스가 사용됩니다. 그러나 도메인 서비스에 도메인 서비스를 주입하는 것은 Vaughn Vernon에 의해 해로운 것으로 간주됩니다 ( "도메인 기반 디자인 구현, 페이지 387"참조). 내 의견으로는, 그 의견은 모순입니다, 이것이 사실입니까? …

7
추상화는 코드 가독성을 줄여야합니까?
내가 함께 일하는 좋은 개발자는 우리가 상속 한 코드에서 기능을 구현하는 데 어려움을 겪었다 고 최근에 말했다. 그는 문제는 코드를 따르기가 어렵다고 말했다. 그로부터 나는 제품을 더 깊이 들여다보고 코드 경로를 보는 것이 얼마나 어려운지를 깨달았습니다. 그것은 많은 인터페이스와 추상 레이어를 사용하여 일이 시작되고 끝나는 곳을 이해하는 것이 매우 어려웠습니다. …


1
프레임 워크 작성시 Dependency Injection / IoC 컨테이너 실습
많은 프로젝트에서 .Net에 다양한 IoC 컨테이너 (Castle.Windsor, Autofac, MEF 등)를 사용했습니다. 나는 그들이 자주 학대받는 경향이 있으며 여러 가지 나쁜 관행을 장려합니다. 특히 플랫폼 / 프레임 워크를 제공 할 때 IoC 컨테이너 사용에 대해 확립 된 관행이 있습니까? 프레임 워크 작성자로서의 목표는 코드를 가능한 한 간단하고 사용하기 쉽게 만드는 것입니다. …

8
의존성 주입은 UnitTesting 외부에서 가치가 있습니까?
초기화하는 여러 객체의 다른 구현을 절대 사용하지 않아도되는 생성자가 주어지면 DI를 사용하는 것이 여전히 실용적입니까? 결국, 우리는 여전히 단위 테스트를 원할 수 있습니다. 문제의 클래스는 생성자에서 몇 가지 다른 클래스를 초기화하며 사용하는 클래스는 매우 구체적입니다. 다른 구현을 사용하지 않습니다. 인터페이스 프로그래밍을 피하는 것이 정당합니까?

5
인터페이스 사용시기 (단위 테스트, IoC?)
나는 여기에 남학생 오류가 있었고 의심을 찾고 있습니다. 내 솔루션 (C #)의 많은 클래스-대다수를 감히 감히-해당 인터페이스를 작성했습니다. 예를 들어 "ICalculator"인터페이스와이를 구현하는 "Calculator"클래스는 해당 계산기를 다른 구현으로 대체 할 가능성은 거의 없습니다. 또한 이러한 클래스의 대부분은 종속성과 동일한 프로젝트에 있습니다. 실제로는 그저 필요 만 internal있지만, public각각의 인터페이스를 구현하는 부작용으로 끝났습니다 …

2
DDD-Lite는 의존성 주입을위한 패턴 언어입니까?
나는 7 시 20 분에 DDD-Lite라고 불리는 것을 언급하면서 DDD 프로젝트가 실패한 7 가지 이유에 대해 Greg Young의 이야기를 우연히 발견 했습니다. 요약하면, 그는 기본적으로 DDD를 DDD와 관련된 다른 작업을 수행하지 않고 패턴 언어 (엔터티, 리포지토리, 가치 객체, 서비스 등)로 사용한다고 말합니다. 그는 .Net의 도메인 모델 중 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 { std::auto_ptr<Dependency> d_; public: UnitUnderTest() …

5
C ++ : 클래스가 종속성을 소유하거나 관찰해야합니까?
class Foobar사용 하는 클래스가 있다고 가정 해보십시오 Widget. 좋은 시절에는 Widgetwolud를의 필드로 선언 Foobar하거나 다형성 동작이 필요한 경우 스마트 포인터로 선언 하면 생성자에서 초기화됩니다. class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> widget; public: Foobar() : widget(std::make_unique<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 컨테이너의 필요성을 이해하려고합니다. IoC 컨테이너의 요점은 실제로 종속성의 구체적인 구현을 "자동 해결"하는 것입니까? 어쩌면 내 클래스에는 몇 가지 종속성이없는 경향이 있으며 그로 …

5
캡슐화를 중단하지 않고 Dependency Injection을 사용할 수 있습니까?
내 솔루션과 프로젝트는 다음과 같습니다. 서점 (솔루션) BookStore.Coupler (프로젝트) Bootstrapper.cs BookStore.Domain (프로젝트) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs 서점 인프라 (프로젝트) 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<>), …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.