2011-04-19 2 views
1

기업 패턴을 연구 중이므로 this book을 읽습니다.IoC의 Enterpise 패턴

제 5 장을 읽었지만 여전히 혼란 스럽습니다 ... 내가 이해하는 한, IoC는 다른 클래스의 종속성을 제거해야합니다. 맞습니까? 일명 느슨하게 결합.

또한 콘크리트 클래스를 다시 빌드하면 종속성이있는 개체가 손상되지 않으므로이 방법이 유용하다고 읽었습니다.

나는 것을이 올바른지, 내가 어셈블리 (.DLL) 그것을 참조하는 다른 프로젝트를 다시 저를 필요로하지 않습니다를 재 구축하는 경우는, 의미가 있음을 이해?

그러나이 책의 샘플은 프로젝트에서이 샘플을 참조하고 클래스의 인스턴스를 얻으려는 많은 작업을 수행하므로 혼란 스럽습니다.

최종 결과는 어셈블리를 동적으로로드하고 MEF와 같은 구체적인 클래스의 인스턴스를 만드는 것이라고 생각했습니다.

누군가 내게 이것을 설명 할 수 있습니까?

+0

이 주제에 대한 좋은 기사입니다 이해하는 데 도움이됩니다 기본 개념을 많이 설명합니다. co.kr/bliki/InversionOfControl.html –

답변

2

IoC는 종속성을 제거하기위한 것이 아닙니다. 어셈블리와 클래스가 밀접하게 결합되어 있지 않습니다. 그리고 당신은 당신이 원할 때마다 그들을 대체 할 수 있습니다.

그러나 주요 방법 중 하나

런타임에 의존하고 사용하는 클래스와 객체를 변경하는 것입니다. IoC 컨테이너에 비즈니스 처리 클래스를 제공하도록 요청할 수 있으며 반환되는 클래스를 신경 쓸 필요가 없습니다. IOC의 컨테이너 인스턴스를 반환하는 클래스의 결정되며, 당신은이 논리를 제공 할 수 있습니다.

IoC (DI)는 밀접하게 연결된 종속성을 제거하고 각 상황에 따라 다른 개체 유형, 처리기, 비즈니스 공급자를 만들기위한 일부 논리를 가지며 런타임시 해당 개체를 신경 쓸 필요가 없습니다.

IoC in WikiPedia

어떤 문제는 해결하려고합니까? 시스템

  • 에서

    • 디커플링 구성 요소 및 레이어가 종속 서로 다른 환경에서
    • 스왑 의존성 구현의 관리를 담당 인에서 구성 요소를 완화합니다.
    • 종속성 조롱을 통해 구성 요소를 테스트 할 수 있습니다.
    • 응용 프로그램 전체에서 리소스를 공유하는 메커니즘을 제공합니다.

    • 더 쉽게 코드를 테스트 할 수 있습니다 장점. 이 코드가 없으면 테스트중인 코드는 다른 시스템과 많이 결합되므로 격리하기가 어렵습니다.
    • 모듈러 시스템을 개발할 때 유용합니다. 다시 컴파일하지 않고도 구성 요소를 교체 할 수 있습니다.
  • +0

    감사합니다 ...하지만 난 여전히 그것으로부터 혜택을 볼 수 없습니다 ... 어쩌면 내가 뭔가를 놓치고있어 .. – Carol

    +0

    간단한 목록을 제공하기 위해 편집하지만, 기억, 실제 위치를 이해하기 위해 애플리케이션의 IoC에 대해 엔터프라이즈 아키텍처 및 디자인에 대한 훌륭한 경험이 있어야합니다. –