«dependency-injection» 태그된 질문

종속성 주입은 구성 요소의 종속성 (객체 인스턴스, 속성)이 생성자, 메서드 또는 필드 (속성)를 통해 설정되는 디자인 패턴입니다. 보다 일반적인 의존성 역전의 특수한 형태입니다.

4
의존성 주입에서 "순환 의존성"을 처리하는 방법
제목에 "순환 종속성"이라고 표시되어 있지만 디자인이 견고 해 보이기 때문에 올바른 표현이 아닙니다. 그러나 파란색 부분이 외부 파트너에서 제공되고 주황색이 내 구현 인 다음 시나리오를 고려하십시오. 또한 하나 이상이 있다고 가정 ConcreteMain하지만 특정 것을 사용하고 싶습니다. (실제로 각 클래스에는 더 많은 종속성이 있지만 여기서 단순화하려고했습니다.) Depency Injection (Unity)을 사용 하여이 …

3
하나의 구현을 구성하는 수많은 사람들. DI 희망이 없습니까? 서비스 로케이터를 사용 하시겠습니까?
주사를 받아들이지 않고 직접 의존성을 구성하는 1001 명의 고객이 있다고 가정 해보십시오. 보스에 따르면 1001을 리팩토링하는 것은 옵션이 아닙니다. 실제로는 소스 파일뿐만 아니라 클래스 파일에도 액세스 할 수 없습니다. 우리가해야 할 일은이 1001 클라이언트가 통과하는 시스템을 "현대화"하는 것입니다. 우리가 좋아하는 모든 것을 리팩터링 할 수 있습니다. 종속성은 해당 시스템의 일부입니다. …

5
TDD를 따르는 것이 필연적으로 DI로 이어 집니까?
TDD (Test Driven Development), DI (Dependency Injection) 및 IoC (Inversion of Control)를 동시에 수행하는 방법을 배웠습니다. TDD를 사용하여 코드를 작성할 때 항상 클래스 생성자에서 DI를 사용합니다. 이것이 TDD를 배우는 방법 때문인지 또는 이것이 TDD의 자연스러운 부작용인지 궁금합니다. 그래서 내 질문은 이것입니다 : 외부 서비스에 의존하지 않는 TDD 교장과 작문 단위 …

3
Poor Man 's Dependency Injection은 레거시 응용 프로그램에 테스트 기능을 도입하는 좋은 방법입니까?
작년에 Dependency Injection과 IOC 컨테이너를 사용하여 새로운 시스템을 만들었습니다. 이것은 나에게 DI에 대해 많은 것을 가르쳤다! 그러나 개념과 적절한 패턴을 학습 한 후에도 코드를 분리하고 IOC 컨테이너를 레거시 응용 프로그램에 도입하는 것은 어려운 일이라고 생각합니다. 응용 프로그램은 실제 구현이 압도적 일 정도로 충분히 큽니다. 가치를 이해하고 시간이 주어진 경우에도 마찬가지입니다. …

3
MVVM 및 서비스 패턴
MVVM 패턴을 사용하여 WPF 응용 프로그램을 작성 중입니다. 현재 뷰 모델은 서비스 계층을 호출하여 모델을 검색하고 (뷰 모델과 관련이없는 방법) 모델을 뷰 모델로 변환합니다. 생성자 주입을 사용하여 필요한 서비스를 viewmodel에 전달하고 있습니다. 쉽게 테스트 할 수 있고 의존성이 거의없는 뷰 모델에서 잘 작동하지만 복잡한 모델에 대해 viewModels를 만들려고하면 많은 서비스가 …

4
이 코드를 작성하는 방법은 테스트 가능하지만 누락 된 것이 있습니까?
라는 인터페이스가 IContext있습니다. 이를 위해 다음을 제외하고는 실제로 어떤 일을하는지는 중요하지 않습니다. T GetService<T>(); 이 방법은 응용 프로그램의 현재 DI 컨테이너를보고 종속성을 해결하려고 시도합니다. 상당히 표준이라고 생각합니다. 내 ASP.NET MVC 응용 프로그램에서 생성자는 다음과 같습니다. protected MyControllerBase(IContext ctx) { TheContext = ctx; SomeService = ctx.GetService<ISomeService>(); AnotherService = ctx.GetService<IAnotherService>(); } 따라서 …

6
의존성 주입 프레임 워크에 대한 논쟁 중 하나에 의문을 제기하는 이유 : 왜 객체 그래프를 만드는 것이 어려운가?
Google Guice와 같은 종속성 주입 프레임 워크는 사용법에 대한 다음 동기 ( source )를 제공합니다. 객체를 구성하려면 먼저 해당 객체의 종속성을 작성하십시오. 그러나 각 종속성을 빌드하려면 해당 종속성 등이 필요합니다. 따라서 객체를 만들 때 실제로 객체 그래프를 만들어야합니다. 손으로 객체 그래프를 작성하는 것은 노동 집약적이며 (...) 테스트를 어렵게 만듭니다. 그러나 …

3
의존성 주입 프레임 워크는 의존성 위험을 야기합니까?
의존성 주입을 사용하기 위해 기존 시스템을 리팩토링했으며 그 작업이 순조롭게 진행되었습니다. 얼마 후 많은 사내 라이브러리가 내가 사용한 DI 프레임 워크에 의존한다는 것을 알았습니다. 결과적으로 전체 프로젝트는 이제이 타사 프레임 워크에 의존합니다. 나는 모든 의존성을 공유 라이브러리에 의존 시켜서 모든 의존성을 분리하는 데 아이러니를 보았습니다. 첫 번째 반응은 종속성 프레임 …

3
의존성 주입 : 어떤 시점에서 새 객체를 만들 수 있습니까?
PHP 응용 프로그램을 리팩토링하고 있으며 가능한 많은 의존성 주입 (DI) 을 수행하려고 합니다. 나는 그것이 어떻게 작동하는지 잘 이해하고 있다고 느끼며, 수업이 훨씬 더 얇고 강건 해짐을 확실히 알 수 있습니다. 클래스 내에서 새 객체를 만드는 대신 종속성을 주입 할 수 있도록 리팩토링하고 있지만 어느 시점에서 일부 객체를 만들어야합니다. 즉, …

4
손으로 의존성 주입은 구성과 다형성에 대한 더 나은 대안입니까?
먼저, 저는 엔트리 레벨 프로그래머입니다. 사실 저는 여름 내내 최종 캡 스톤 프로젝트로 AS 학위를 마치고 있습니다. 저의 새로운 직업에서, 제가해야 할 프로젝트가 없을 때 (팀을 더 많은 신입 사원으로 채우기 위해 기다리고 있습니다), 기다리는 동안 읽고 배우는 책을 받았습니다 – 일부 교과서, 기타 코드 완성과 같은 것은 아닙니다. 이 …

8
비동기 함수를 노출하는 인터페이스가 누출 추상입니까?
나는 Dependency Injection Principles, Practices and Patterns 책을 읽고 있으며,이 책 에 잘 설명되어있는 누출 추상화 개념에 대해 읽었습니다. 요즘 나는 의존성 주입을 사용하여 C # 코드베이스를 리팩토링하여 비동기 호출이 차단 호출 대신 사용되도록합니다. 그렇게하면 코드베이스에서 추상화를 나타내는 일부 인터페이스를 고려하고 비동기 호출을 사용할 수 있도록 다시 디자인해야합니다. 예를 들어, …

4
의존성 주입과 반대되는 기술 용어?
이것은 순수한 기술적 질문이 아닌 명명법 (기술적 글쓰기)에 가깝습니다. 응용 프로그램에서 종속성 주입을 확장하는 데 중점을 둔 리팩토링 제안서를 작성하고 나 자신에게 할당하려고합니다. 우리는 자동 배선 Bean에 Spring 을 사용하지만 MyClass obj = new MyClass(...)완전히 주입 될 수있는 Bean을 사용하여 인스턴스를 생성하는 인스턴스가 여전히 있습니다. 제안서에 우아한 명명법을 사용하고 적절한 …

2
의존성 주입 스타일의 실제 차이점은 무엇입니까?
나는 의존성 주입에 익숙하지 않으며 응용 프로그램에서 어떤 스타일을 사용 해야하는지에 대한 몇 가지 질문이 있습니다. Martin Fowler의 Inversion of Control Containers 및 Dependency Injection 패턴 을 읽었 지만 생성자, setter 및 인터페이스 주입의 실제 차이점을 알 수 없습니다. 나에게 하나를 사용하는 이유는 코드 정리 및 / 또는 명확성의 문제 …

2
n-tier Entity Framework 솔루션을 사용한 의존성 주입
현재 Entity Framework 5 (.net 4)를 데이터 액세스 전략으로 사용하는 n 계층 솔루션을 설계하고 있지만 의존성 주입을 통합하여 테스트 가능하고 유연하게 만드는 방법에 대해 우려하고 있습니다. 현재 솔루션 레이아웃은 다음과 같습니다 (내 솔루션은 Alcatraz라고 함). Alcatraz.WebUI : 프론트 엔드 사용자 인터페이스 인 asp.net 웹 양식 프로젝트는 Alcatraz.Business 및 Alcatraz.Data.Models 프로젝트를 …

3
IValidatableObject 대 단일 책임
뷰 모델이 IValidatableObject를 구현하고 사용자 지정 유효성 검사를 추가 할 수있는 MVC의 확장 성 지점이 마음에 듭니다. 이 코드가 유일한 유효성 검사 논리가되도록 컨트롤러를 간결하게 유지하려고합니다. if (!ModelState.IsValid) return View(loginViewModel); 예를 들어, 로그인 뷰 모델은 IValidatableObject를 구현하고 생성자 삽입을 통해 ILoginValidator 객체를 가져옵니다. public interface ILoginValidator { bool UserExists(string email); …

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