2009-08-25 1 views
1

저는 데스크톱 GIS 애플리케이션을 작성 중이며 MapXtreme, MS Virtual Earth 및 사용자 정의 맵 엔진을 지원합니다. 응용 프로그램 사용자는 다음을 선택하여 런타임에 맵 엔진을 변경할 수 있습니다. 드롭 다운 목록. 나는 이런 식으로지도 엔진을 변경하는 팩토리 클래스가 있습니다.의존성 주입을 사용하여 런타임에서 구현할 것을 결정하십시오.

public class MapFactory implements IMapFactory 
{ 
    public IMapEngine createInstance(MapType type) 
    { 
     if(type==MapType.MapXtreme) 
      return new MapXtremeEngine(); 
     else if(type==MapType.VirtualEarth) 
      return new VirtualEarth(); 
     //....other code 
    } 
} 

유형 매개 변수별로 런타임에 적절한 MapEngine 구현을 만들기 위해 의존성 주입 프레임 워크를 사용할 수 있습니까?

+0

제안 사항이 있습니까? – mcaaltuntas

답변

2

이 예제는 조건부로 개체를 인스턴스화하는 데 필요한 정확한 패턴입니다. 인스턴스를 생성해야하는 곳이면 생성자에 IMapFactory을 수락하십시오.

대부분의 DI 프레임 워크는 IMapFactory 인스턴스를 전달해야합니다.

+0

DI 프레임 워크는 타입 매개 변수를 사용하여 VirtualEarth, MapXtreme 또는 ..의 인스턴스를 만들 수 있습니까? 그렇다면 어떻게 구성 할 것인지 예를 들어 줄 수 있습니까? – mcaaltuntas

+0

내가 말했듯이 조건부 인스턴스화를 설정하는 올바른 방법이 있습니다. VirtualEarth와 MapXtreme 인스턴스를 생성하기 위해 DI 프레임 워크가 필요하지 않습니다. DI 프레임 워크는 팩토리의 인스턴스를 생성합니다. –

+0

이러한 클래스에 복잡한 생성자가없는 한 간단하게 남겨 두지 않은 경우입니다. 그럴까요? –