쉽게 테스트 할 수있는 코드를 작성하려고합니다. 그 때문에 새로운 Class1()을 직접 호출하지 않아도됩니다. 대신 나는 보통이 인터페이스를 반환하는 GetObject() 메서드가있는 간단한 팩토리 인 인터페이스를 만듭니다.테스트 할 수있는 코드를 작성한 결과로 너무 많은 팩터 리
잘 작동합니다. 내가 발견 한 문제는 새로운 Class1() (또는 생성을 담당하는 클래스/인터페이스)을 호출하는 것을 제외하고는 기본적으로 아무것도하지 못하는 너무 많은 팩토리이다. 나는 그것이 테스트 할 수있는 코드를 가지고 있기 때문에 값을 치르는 데 큰 댓가라고 생각하지 않는다. 그러나 누구든지 더 나은 aproach를 사용하고 여전히 테스트 시간에 Class1의 다른 구현을 주입 할 수 있다는 목표를 달성 할 수 있을까?
속성으로 Class1 구현을 노출 할 수 있고 런타임에 기본값을 사용할 수 있다는 것을 알고 있지만 많은 인스턴스에서 해당 Class1이 필요할 때마다 한 인스턴스로 제한된다는 것을 의미합니다.
편집 :
저는 IoC를 사용합니다. 실제로 도움이됩니다. 그럼에도 불구하고 나는 보통 공장을 IoC 구성에 대한 의존성으로 갖게됩니다. 내 GetObject 메서드는 일반적으로 IoC.Resolve와 같은 것을 호출합니다. 나는 비즈니스 로직을 포함하고있는 도메인 클래스에 직접적으로 의존하지 않고 공장에서 고립 된 IoC 의존성을 선호한다.
IoC 컨테이너가 필요한 것 같습니다. –
@Martinho - 답변을 정교하고 답으로 쓸 수 있습니까? –