2009-06-17 8 views
0

MVP 또는 MVC 디자인 패턴 다음에 문제가 있습니다 (둘 중 하나에 적용). 모델 레이어에서 사용자 입력에 대해 명확하게 묻는 방법을 알아낼 수 없습니까? 모델의 특정 값에 따라 프로세스 중간에 사용자에게 입력을 요구해야 할 수도 있습니다.모델 레이어에서 사용자 입력 받기

예를 들어, 가상 PO 입력 프로세스를 진행합니다. 사용자가보기에서 버튼을 누르면 표현에서 PO 세부 정보를 전달하는 발표자를 호출한다고 가정 해 보겠습니다. 발표자는 모델을 호출하여 새로운 PO를 확인하고 PO 컬렉션에 삽입합니다. 모델의 유효성 검사 중 하나는 다른 PO가 동일한 항목으로 아직 입력되지 않았는지 확인하는 것입니다. 앱이있는 경우 앱에서 PO가 중복이 아닌지 확인하라는 메시지를 표시해야합니다. 앱은 현재 모델에 깊이 들어 있습니다. 보기로 돌아가서 운영자 입력을 검색 한 다음 모델 입력 코드로 돌아가 PO 입력 프로세스를 마칩니다.

답변

0

paper I read on presenter first에서 발표자는 모델 및보기에 종속되어 모델 및보기의 이벤트에 가입하는 것이 좋습니다.
이렇게하면 처리를 계속할 수없는 시점에서 모델에서 이벤트를 발생시킬 수 있습니다. 발표자는보기에서 어떤 메소드를 호출하여 모델에서 이벤트를 처리합니다 (사용자에게 프롬프트합니다). 그러면 모델의 메서드에서 반환 된 값이 모델에 반환됩니다 (.NET에서 사용하는 EventArguments 하위 클래스와 같은 이벤트의 시작/종료 매개 변수).

0

모델과 UI 패턴의 다른 구성 요소 간의 알림 상호 작용 형태를 살펴볼 수 있습니다.

Martin Fowler가 그것에 대해 썼습니다. here.

모델에 깊이 들어가서 사용자 입력을 얻은 다음 모델로 돌아가려면 다음을 수행하십시오. 컨트롤러는 모델 수정 작업을 담당하며 모델을 변경하기 전에 유효성 검사를 수행해야합니다. 이를 위해서는 업데이트 코드와 유효성 검사를 구분해야 할 수 있습니다.

+0

컨트롤러 레이어에 로직을 삽입하여 유효성 검사를 위해 모델을 히트 할 수 있습니까? 그렇다면 모델이 업데이트에 충돌 했습니까? 레이어를 이해하는 방법은 뷰를 업데이트하는 것이 유일한 책임이라는 것입니다. 모든 응용 프로그램 논리는 모델 내에 있습니다. MVP와 MVC 패턴의 차이점 중 하나일까요? 제어기 레이어가 다음과 같이 처리 할 수 ​​있습니다. if model.NewPOIsValid (PO) Then Model.AddPO (PO) End if –