2008-11-12 13 views
3

두 가지 양식의 Windows 양식 앱에서 MVP 패턴을 사용하기 시작했습니다. 이 양식은 발표자를 만들고 발표자에게 다시 전달합니다.Windows Forms의 MVP 및 IOC?

특정 프레임 워크를 사용하고 있지 않으며 양식에서 다른 양식을 열 수 있습니다.

발표자가보기를 통해 다른 양식을 열 수 있도록이 설정을 변경해야합니까? IOC 프레임 워크를 사용해야 할 것입니다.

이렇게하면 UI에서 관련 양식을 열어서 양식 내에서 발표자에 대한 참조를 제거 할 수있게됩니다.

답변

0

winforms 프로젝트와 비슷한 작업을하고 있습니다. 하나는 업무용이고 다른 하나는 가정용입니다.

둘 모두를위한 나의 해결책은 발신자가 새 발표자에게 메시지를 보내고 전달할 수 있도록보기를 위해 팩토리를 사용하는 것입니다. 어떤 경우에는 발표자 자신이나 삽입 할 수있는 중개자 클래스에 서비스 인터페이스를 배치하여 더 추상화하고 있습니다.

3

양식 작성/관리를 담당하는 별도의 클래스가 있어야합니다. 커맨드 패턴을 사용하여 새로운 폼을 여는 코드를 호출하는 것이 좋습니다. 그것은 더 나은 스케일링을 끝낼 것이고 당신은 Command 구현을 변경하여 다른 일을 할 수 있습니다. 내 프로젝트에서, 나는 단지 폼 자체로 데이터 변경을하지만, "어플리케이션"과 상호 작용하는 것은 Command 객체에 위임된다.

이렇게하려면 IOC 프레임 워크가 필요하지 않지만 도움이됩니다. 단순한 요구 만 있다면 간단하게 유지할 수 있습니다.

여기 내 사이트에 WinForms MVP 예제가 있습니다 : ModelViewPresenter. IOC 컨테이너는 사용하지 않지만 코드를 사용하면 빠른 홉 (hop)이 될 것입니다.

+0

Garo 예제 코드를 보내 주셔서 감사합니다. 그러나 MVP에 대한 매우 간단하거나 명확한 예라고 생각하지 않습니다. 대신 MVC처럼 보입니다. 여러분은 'ApplicationPresenter'가 아닌'ApplicationController' 타입을 호출 할 수도 있습니다. – Pat

+0

예에서 ApplicationController는 Presenter가 아닌 Controller입니다. 발표자는 AbstractPresenter에서 상속 받고 Modules 폴더에 있습니다. 발표자는 모델의 데이터를보기에 바인딩하고 컨트롤러는 응용 프로그램을 함께 가져 와서 발표자로드 및 물건 올리기 (일반적으로 컨테이너에서 처리 할 수 ​​있음) 작업을 수행하는 환경 기능을 제공합니다. –