MVVM 패턴을 사용하여 WPF 응용 프로그램을 작성 중입니다. 현재 뷰 모델은 서비스 계층을 호출하여 모델을 검색하고 (뷰 모델과 관련이없는 방법) 모델을 뷰 모델로 변환합니다. 생성자 주입을 사용하여 필요한 서비스를 viewmodel에 전달하고 있습니다.
쉽게 테스트 할 수 있고 의존성이 거의없는 뷰 모델에서 잘 작동하지만 복잡한 모델에 대해 viewModels를 만들려고하면 많은 서비스가 주입 된 생성자가 있습니다 (하나는 각 종속성과 사용 가능한 모든 값 목록을 검색합니다) 예를 들어 itemsSource에 바인딩합니다. 그런 여러 서비스를 처리하는 방법이 궁금하지만 단위 테스트를 쉽게 수행 할 수있는 뷰 모델이 있습니다.
몇 가지 해결책을 생각하고 있습니다.
사용 가능한 모든 서비스를 인터페이스로 포함하는 서비스 싱글 톤 (IServices) 작성. 예 : Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). 그렇게하면 많은 서비스 매개 변수가있는 거대한 생성자가 없습니다.
viewModel에서 사용하는 서비스에 대한 파사드를 만들고이 객체를 내 viewmodel의 ctor에 전달합니다. 그러나 각 복잡한 뷰 모델 각각에 대한 파사드를 생성해야 할 것입니다.
이런 종류의 아키텍처를 구현하는 "올바른"방법은 무엇이라고 생각하십니까?
new
다른 뷰 모델을 생성하는 데 사용해서는 안된다는 것을 이해할 수 있지만 "새 문서"단추 나 메뉴를 클릭하면 새 탭이 추가되거나 새 창이 열리는 MDI 응용 프로그램처럼 단순한 것을 생각할 수 있습니다. 쉘 / 컨덕터 는 하나 또는 몇 개의 간접 레이어 뒤에 숨겨져 있어도 뭔가 새로운 인스턴스를 만들 수 있어야합니다 .