문제

(이 질문은 특히 C#에 있지만 일반적으로 .NET에 적용됩니다)

나는 디자인이 상당히 좋은 대형 응용 프로그램을 가지고 있으며 인터페이스를 통해 주요 섹션으로 나뉘어져 있습니다 (이것은 병렬 개발을 돕기 위해 수행되었습니다).

이제 필요한 인터페이스를 구현하는 1 차 콘크리트 클래스 세트가 있지만 대체 상황 및 테스트를위한 추가 콘크리트 클래스 세트도 있습니다.

현재 우리는이 모든 클래스를 코드의 최상위 레벨로 함께 가져옵니다.

IMyInterface xComponent = new ConcreteXComponent1();

구성 요소를 교체하려면 해당 라인 만 변경하고 다시 컴파일하면됩니다.

// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();

그것은 훌륭하게 작동하지만 분명히 다시 컴파일이 필요합니다. 오히려 콘크리트 클래스가 구성 파일의 값을 사용하여 선택되었습니다.

구성 파일을 사용하여 콘크리트 클래스를 변경하는 표준 패턴은 무엇입니까? 이 문제를 해결할 수있는 표준 라이브러리가 있습니까?

감사!

도움이 되었습니까?

해결책

IOC 컨테이너를보고 싶습니다. (Spring.net, StructureMap, Windsor 등)

다른 팁

당신은 사용할 수 있습니다 Activator.CreateInstance 방법. 메소드 오버로드 중 하나는 유형 이름을 사용하여 기본 생성자를 사용하여 인스턴스를 만듭니다. 그런 다음 구성 파일에 클래스 유형 이름을 저장하고 응용 프로그램에서 읽을 수 있습니다.

공장 패턴을 시도하십시오

http://en.wikipedia.org/wiki/abstract_factory_pattern

IOC 컨테이너를 사용하면 동적으로로드 할 수있는 객체의 풀 또는 컬렉션이 생성됩니다. Romain이 제안한 프레임 워크는 객체를 설명하는 구성 파일과 이들이 어떻게 인스턴스화되는지를 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top