2012-07-03 2 views
11

IoCDI의 차이점을 설명하는 많은 스레드를 읽었으며 설명의 많은 부분이 서로 모순되는 반면 나는 그 차이를 이해하는 데 여전히 도움이되었다고 생각합니다.Inversion of Control 대 특정 인용 부호가있는 Dependency Injection - 내 이해가 정확합니까?

여기 내 이해가 올바른지 물어보고 싶습니다. 또한 저를 도왔던 발췌 내용을 게시하고 싶습니다 (일부는 서로 모순이 있음).

주제에 대해 많은 스레드가 있다는 것을 알고 있지만, 언급 한 스레드의 OP를 생각하지 않았기 때문에이 스레드가 닫히지 않기를 바란다. 스레드)를 사용하여 마침내 이해할 수있었습니다.

어쨌든, 여기에 내가 그것을 이해 (해결하시기 바랍니다 가능하면/개별적으로 각 질문에 대한 답변)하는 방법입니다

우리가 프레임 워크 수준에서 DIP 원리를 적용 할 때 는) 다음 우리는 용어를 사용

IoC? 그리고 DIP프레임 워크 레벨에 구현하는 메커니즘 중 하나는 DI입니까? 우리가 (A 낮은 수준/비 프레임 워크 수준에서 DI)를 사용하여 DIP, 우리는 단순히 호출하는 경우 DI을 구현할 때

B) 용어 IOC의이 적용되지 않습니다?

c)는 DI은 우리가 다른 둘 중 하나가 참여에 중립적 인 제 3 자에게 종속의 실제의 생성과 선택의 제어를 전달하여 DIP을 실현하려하는 데 도움이? DIP 적용하면 (워크 레벨 IOC()에서 DI)를 사용

D)는 다음 제어를 세 가지 유형의 반전 얻을 : 인터페이스

  1. 컨트롤. 이제 상위 모듈이 하위 모듈이 다른 방향 대신에 준수해야하는 인터페이스를 제어합니다.

  2. 흐름 제어. -> 이제 프레임 워크 코드 (대신 사용자/비즈니스 코드의가) (즉 - 들이 (즉, 프레임 워크) 전화 (즉, 비즈니스 코드)) 프로그램의 흐름을 제어

  3. 종속성 생성 제어. 이 반전은 실제 생성 및 종속성 선택에 대한 제어를 관련된 다른 2 중 어느 하나의 중립적 인 제 3 자에게 전달합니다.

E) DIP이인가되는 경우 (비 워크 레벨에서 DI)를 사용하여, 다음 제어에는 두 가지 유형이 반전 얻을 : 인터페이스

  1. 컨트롤 . 지금 고레벨 모듈은 하위 모듈

  2. 주위 대신 다른 방식 의존성 생성의 제어를 부착하는데 필요한 인터페이스를 제어한다. 이 반전은 실제 생성 및 종속성 선택에 대한 제어를 관련된 다른 2 중 어느 하나의 중립적 인 제 3 자에게 전달합니다.

? 컨트롤의

Why so many terms to say the same thing? IoC and DIP

반전이 일반적인 용어입니다 :

여기에 도움이 발췌. 의존성 삽입 (Dependency Injection)은

프레임 워크/인프라가 아니라 다른 방법으로 주위

보다 응용 프로그램 코드를 호출 할 때 컨트롤의

반전은 ... IOC의

의 특정 유형의

입니다 ...

은 IoC를 수행하지 않고 DI를 수행 할 수 있습니다. HelloWorld에 HelloWorld에 aConsoleStringWriter를 삽입하면 "프레임 워크"또는 "인프라"가 없으므로 IoC로 생각하지 않습니다.

Inversion of Control < Dependency Injection

당신은 파울러의 정의를 받아 들인다면

는 제어의 반전은 프레임 워크에 연결 사용을 allframework 커버 DI보다 훨씬 광범위한 용어입니다,하지만 프레임 워크는 컨트롤에 아직도있다. 종속성 주입은 IoC를 특수화하여 종속성을 관리하는 데 IoC를 적용합니다. Where exactly is the difference between IoC and DI

IOC의

는 계약의 이행을 변경할 수있는 기능입니다. DI는 구현을 제공하는 기능입니다.

...

기존의 애플리케이션 개발자는 비즈니스 코드와 프레임 워크 코드를 작성합니다. 그런 다음 비즈니스 코드는 프레임 워크 코드 을 호출하여 작업을 완료합니다.IOC는 모델에 따라, 당신은 비즈니스 모듈을 받아 이 작업

을 수행

의존성 삽입 (Dependency Injection)는 기술이다에 그들을 호출하는 프레임 워크를 만들 그 모델을 "반전"내부 제거 (하드 패턴, 정말 호출) 구현으로부터의 종속성은 외부 개체 호출자 인 에 의해 클래스/메서드에 종속 개체가 주입되도록합니다. IoC 프레임 워크는 종속성 주입을 사용하여 사용자 모듈과 기타 종속 코드를 " 모두 붙인 프레임 워크 루틴에 제공합니다." 의존성 주입은 IoC 프레임 워크에 의해 많이 사용됩니다. 왜냐하면 그것이 " 당신에게 전화"할 수있는 메커니즘이기 때문입니다.

DIP vs. DI vs. IoC

DIP

는 DI으로 우리를 안내하는 원칙이다. 기본적으로 느슨한 커플 링이 목표이며이를 달성하는 데는 최소한 두 가지 방법이 있습니다. • 의존성 사출 • 서비스 로케이터

Does anyone have a good analogy for dependency injection?

은 (종속성 주입 구현으로있는) 제어 반전의 본질은 이들 관리에서 객체의 사용의 분리이고 .

Difference between ioc and dependency injection

용어 종속성 &는 제어의 반전 (IOC의)이 는 일반적으로 모든 사람이 그 점에 동의하지만, 같은 디자인 패턴 을 (설명하는 의미로 사용됩니다 주입 (DI), 일부 사람들은 을 약간 다른 방식으로 적용하는 경향이 있습니다.) 패턴은 원래 IoC라고하는 이었지만 마틴 파울러는 모든 프레임 워크가 어떤 식 으로든 컨트롤을 반전 시켰기 때문에 DI로 전환을 제안했으며 컨트롤의 어느 부분이 반전되었는지에 대해 더 구체적으로 말하고 싶습니다.

Inversion of Control vs Dependency Injection

는 반전 컨트롤 (IOC의)의 개체들이 자신의 작업을 할 의존하는 다른 객체를 생성하지 않는 것을 의미한다. 대신 외부 소스에서 필요한 객체 인 을 가져옵니다 (예 : xml 구성 파일). DI (Dependency Injection)는 객체가 개입하지 않고 을 수행한다는 것을 의미합니다. 일반적으로 이 생성자 매개 변수를 전달하고 속성을 설정하는 프레임 워크 구성 요소에 의해 수행됩니다.

+1

SO는 포럼이 아니므로 "스레드"가 없습니다. Q & A 사이트이므로 질문과 답변이 있습니다. 형식의 차이가 여러 가지 결과를 낳기 때문에 이것은 중요한 차이가 아닙니다. 또한 [programmers.SE] (http://programmers.stackexchange.com/)는 개념 및 디자인 관련 질문에 더 적합합니다. 그래서 구현 문제입니다. – outis

+3

[이 책] (http://manning.com/seemann/)을 통해 모든 답변을 얻을 수 있습니다. – Steven

답변

관련 문제