문제

우리는 MVP 패턴과 상당한 양의 성공으로 Winforms를 사용해 왔습니다. 그러나 항상 MVP에 대한 질문이 있습니다.

무엇입니까 좋은 발표자를위한 세분성?

내가 의미하는 바는 다음과 같습니다. winforms를 사용하면 세밀하게 세분화가 일반적으로 사용자 컨트롤에 매우 효과적입니다. 이렇게하면 더 복잡한 GUI를 설계하면서 사용자 컨트롤을 재사용하고 빌딩 블록으로 사용하기 쉽습니다. 그러나 발표자와 동일하게 (미세한) 세분성을 갖는 것은 문제가되는 것 같습니다.

한편으로는 거친 입자 발표자 "플러그인"컨트롤을 사용하는 능력을 방해하고 건식 원칙을 위반하는 기능을 방해합니다. 여러 발표자는 종종 동일한 논리를 구현해야합니다 (예를 들어 고객 목록을 채우십시오. .

반면에, 세밀한 발표자 다른 상황에서 제어를 재사용하는 능력을 제한하는 것 같습니다. 예를 들어, 편집보기는 때때로 고객을 즉시 저장해야 할 수도 있습니다. 때로는 다른 것에 연결해야합니다. 때로는 유효성을 확인해야합니다. 등등. 종종 더 복잡한 제어에 따라 다릅니다. 그러나 상당한 양의 공유 행동도 있습니다.

두 경우 모두 1- 프리 센터 -1- 뷰를 달성 할 수 있습니다. "1-view"변경 사항으로 간주되는 것.

MVP 및 WinForms를 사용하여 발표자 세분화에 대한 최고 수준으로 간주되는 것은 무엇입니까?

  • 세분화 된 발표자 및 사용자 정의 가능 옵션이나 그 성격의 무언가를 통한 행동?
  • 거친 입자 발표자와 낮은 발표자 재사용 성?
  • 다른 것?

면책 조항 : 우리는 주로 감독 컨트롤러를 사용하지만 수동적보기에도 적용된다고 생각합니다. 긴 질문에 대해서도 죄송합니다.

도움이 되었습니까?

해결책

우리는 모든 고객에게 MVP를 사용하며 이것은 분명히 한 번 이상 나오는 대화입니다. 수업과 발표자의 코드는 얼마나 깨끗해야합니까? 우리는 거친 입자 발표자 접근법을 사용하기로 결정했습니다. 기본적으로, 모든 형식에는 자체 발표자가 있으며, 뷰를 사용하여 특정 형태의 컨트롤의 속성 만 얻고 설정합니다. 콤보 박스를 채우기 위해 DB에 전화를 걸어 공공 서비스 클래스에 있습니다. 사용자 입력 데이터의 유효성 검사는 BO 클래스에 있으며 모든 발표자 및/또는 모든 발표자가 재사용 할 수 있습니다. 이게 도움이 되길 바란다.

다른 팁

내 CAD-CAM 시스템에서 발표자는 사용자 컨트롤을 사용하지 않습니다. 사용자 컨트롤은 발표자가 사용하는 뷰 인터페이스를 구현하는 EXE 어셈블리에 존재하는보기에 있습니다.

고객 목록을 표시하려면 DisplayCustomerList가있는보기에 전달하고 고객 목록을 표시하는 데 필요한 사용자 컨트롤의 조합을 사용합니다. 여러 조회수가 동일한 방식으로 고객 목록을 표시하면 EXE/View Assembly에서이를 위해 사용자 컨트롤 또는 클래스를 공유합니다. 그 수업은 그 어셈블리 밖에 가지 않습니다.

우리의 소프트웨어는 다양한 유형의 금속 절단 기계를 실행하도록 조정되었습니다. 따라서 우리는 UI를 찢어 내고 완전히 다른 UI (다른 기계에 해당)로 교체 할 수 있다는 점에 중점을 둡니다. 이 모든 UI는 동일한 핵심 어셈블리 세트를 참조합니다.

계층 구조는 다음과 같습니다

EXE PRESENTER 구현 명령 어셈블리보기 -Model Presenter Interfaces Model Assemblies를 수정하는 발표자가 명령을 실행합니다.

측면에는로드 할 수있는 파일 유형, 보고서, 장치 드라이버 등과 같은 동적 컨텐츠를 정의하는로드 가능한 어셈블리가 있습니다. 모델 어셈블리에서 발견되는 다양한 인터페이스를 구현합니다.

내가하는 한 가지는 모든 대화에 대해보기 발표자를 자극하지 않는다는 것입니다. 대화 상자가 명령과 단단히 바인딩되면 명령 클래스와 함께 정의, 생성 및 사용됩니다. 때때로 관련 명령 그룹은 대화 상자를 공유합니다 (예 : 파일 처리).

MVP를 사용할 때 묻는 필수 질문은 "양식을 다른 것으로 완전히 바꾸려면 어떻게됩니까?"입니다. 이 질문에 대한 답변은 특정 사용자 제어 또는 형태 엔진에 너무 의존하는 위치를 식별합니다.

내 설정에서 가장 큰 문제 (그리고 내가 좋은 답변을 얻지 못한 것)는 현재 IDE와 Langauges가 사용자 컨트롤을 데이터베이스 레코드에 쉽게 묶을 수 있다는 것입니다. 디자인을 지배하는 경향이있는 다른 설정과 비교하여 생산적입니다. CAD-CAM 애플리케이션에서 문제를 많이 다룰 필요가 없었으므로 데이터 세트를보기에 전달한 것 외에는 다른 답이 없습니다. 이 지역 이 상황에서 사용할 수있는 몇 가지 패턴이 있습니다.

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