나는 발표자 클래스에서 새 도메인 클래스를 리팩토링했지만 어디에서 인스턴스화해야하는지 알 수 없다.Passive View 아키텍처에서 Presenter 클래스에 대한 종속성 생성은 어디에 두어야합니까?
이는 기존 프로젝트의 유지 관리가 미진한 진행중인 대규모 리팩터링 작업의 일부입니다.
발표자는 현재보기의 OnLoad 이벤트에 의해 작성되고 있으며보기는 생성자의 매개 변수로 전달됩니다. 발표자의 모든 public 메서드는 매개 변수가 없으므로 반환되지 않습니다. 보기의 공용 속성을 사용하여보기와 통신합니다.
본질적으로 겸손한 형태 인 견해는 전적으로 모든 것에 대한 발표자에 달려 있습니다.
이것은 일반적인 패시브 뷰 패턴이며 계속 적용하고 싶습니다. 내 딜레마에 빠지게된다. 발표자가 사용할 새 도메인 객체의 인스턴스를 만들어야합니다.
- 생성자를 통해 전달하면보기에서 불필요한 종속성이 발생합니다.
- 발표자의 아무 곳에서나 만들면 단위 테스트에서 모의 개체로 바꿀 수 없습니다.
- 발표자의 공개 속성으로 사용하는 경우 발표자 메서드에 생성 순서 종속성을 사용하고 외부 클래스가이를 작성하는 책임을 해결하지 못했습니다.
현재 종속성 주입 프레임 워크를 사용하고 있지 않습니다. 앞으로는 소스 코드를 사용하는 것에 관심이 있지만 제 3 자 프레임 워크를 소개하기에는 여전히 취약합니다.
나는 어떤 제안이 있어도 열람 할 수 있습니다.
디자인이 재미 있습니다. 보기가 수동보기 패턴에 맞지만 발표자와 컨트롤러 모두에서 본 적이 없다.내가 본 예에서는 발표자가 무거운 물건을 들고 도메인 객체 및 데이터 저장소와 이야기하는 것을 보았습니다. 귀하의 중간 남자로서의 발표자와 작업을하는 컨트롤러가있는 동안. 추가 레이어의 장점은 무엇입니까? –
이점은 분명합니다 ... 모든 과중한 작업이 발표자에게 완료되면 복잡한 시나리오에서 네비게이션을 관리하는 것이 컨트롤러의 책임입니다. 보기가 다른 것에 대해 알지 못하는 마법사의 예제처럼 모든 것이 컨트롤러에 의해 처리됩니다. – ruslander