문제

Winforms 응용 프로그램에서 가상 그리드와 MVP 패턴을 사용할 때 책임의 가장 좋은 분류는 무엇입니까?

포함:

  1. 사용자의 그리드에서 콜백을 얻는 셀 업데이트가 변경되었습니다.
  2. 줄과 열이 주어진 셀의 스타일과 값을 설정하기 위해 그리드에서 콜백
도움이 되었습니까?

해결책

모델-뷰-프리 센터라고하는 많은 패턴의 정확한 책임은 다양합니다. 주로 그들은 발표자가 견해를 통해 얼마나 많은 제어가 가해 지는지에 따라 다릅니다. Martin Fowler는 그의 장에서 여러 가지 다른 변형에 대해 깊이 토론했습니다. GUI 아키텍처, 읽을 가치가 있습니다.

살펴보십시오 발표자 먼저 어댑터와 책임을 다소 처리 할 때.

둘 다 수동적 견해 그리고 컨트롤러 감독 볼 가치가 있습니다.

모델 (또는 도메인 모델) == 상태 및 행동을 포함하여 시스템에 관련된 엔티티의 논리적 표현

발표자 == View (및 아마도 모델)에서 이벤트를 듣고 해당 요청을 서비스하고, 모델 유형을보기 유형 (수동보기)으로 변환하면보기와 모델을 서로 숨기는 것이 실제로 배관입니다. 사용자의 자극에 반응합니다.

View == 프레젠테이션 : 사용자가 상호 작용할 수있는 모델의 시각적 표현, 사용자 입력 수집

콜백과 그리드 셀 스타일을 얻는 것에 대한 구체적인 질문에는 그리드의 뷰 처리 이벤트가 포함되며 이벤트를 발표자에게 다시 제기하여 조치를 요청하거나 모델에서 데이터를 검색합니다. 이는 셀 컨텐츠가 업데이트 될 때 콜백에 적합합니다 (발표자가 모델의 변경을 검증하고 모델의 변경을 수행 할 수 있도록 발표자에게 게시해야합니다).
그리드 셀 스타일의 경우,보기의 일종의 어댑터는 상태를 모델에서 (보기에서 발표자로 이벤트를 통해 검색 함) 그리드 셀 스타일 정보로 변환해야 할 수도 있다고 생각합니다. 이것은 발표자에게서 일어날 수 있지만 개인적으로 발표자가 위젯에 대한 지식을 갖지 않는 것을 선호합니다.

다른 팁

내가 당신을 올바르게 이해한다면, 그리드는 뷰 구현의 일부이며 발표자에게는 보이지 않습니다. 이 경우 발표자는 데이터가 어떻게 표시되는지 알 필요가 없으며 제공 방법 만 알 필요가 없습니다.

나는 아마도 그리드가 통신하는 일종의 어댑터 인 도우미 클래스를 만들 것입니다. 그리드는이 도우미, 디토 (Ditto) 외에는 아무것도 본다.

협업은 다음과 같습니다.

그리드 <-헬퍼 <-뷰 <--> 발표자

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top