0

GUI가있는 서버 응용 프로그램이 있습니다. C#으로 작성되었습니다. 이제 전체 응용 프로그램에 MVC 패턴을 사용하고 싶습니다.MVC +이 1 : n 관계에 대한 패턴

일반적으로 1 개의 모델, 1 개의 컨트롤러 및 n 개의보기가 있습니다. 좋아, 나는 모든 것을 가지고 있지만, 모델에 대해서는 잘 모르겠다.

내 상황 : 클라이언트의 수를 가지고 온라인/오프라인 등 수 있습니다 1 개 서버 상태가있다이 내 "서버 모델"이 될 수 있습니다. 내 네트워크 라이브러리를 통해 네트워크 연결을 처리하고 하나가 연결되면 학생 개체를 만듭니다. 그것은 모두 여기에서 일어난다. 새로운 학생이 있고 (컨트롤러를 통해) 새로운 학생을위한 GUI 요소를 표시하면보기가 나타납니다. 이제 특수한 학생과 관련된 행동이 내 시야에 들어 왔고 컨트롤러는 "StudentChanged"라는 통지를 받고 변경된 학생을 얻습니다.

질문 : 이제 컨트롤러가 학생을 직접 변경하거나 학생을 변경하는 방법을 ServerModel에 알릴 수 있습니다. 두 번째 방법은 첫 번째보기에서 과장되어 보이지만 MVC 디자인을 명확하게 유지합니다. 컨트롤러에서 직접 학생을 변경하고 싶습니다. 그러나 MVC 위반 (학생이 모델이 아니지만 모델의 일부 임)이 이후 개발에서의 단점이나 전체 코드의 유연성을 가져올 지 확실하지 않습니다. 함부르크에서 인사말

, 엄지 손가락의)

답변

1

컨트롤러는 사용자가 학생에 대해 변경하고자하는 정보를 수집하여보기로 전달해야합니다.

command pattern을 사용하여 학생을 변경하는 데 필요한 작업을 묶어 볼 수 있습니다. 예를

  1. 사용자가 자신이
  2. UI를가 사용자가 인터페이스를 통해 학생을 변경하고자하는보기를 통지 학생을 변경하고자하는 UI에 대한 작업을 수행 들어

    .

  3. 보기 변경 변경 실행 CommandObject
  4. CommandObject는 응용 프로그램을 시작할 때 UI에 의해 View에 등록 된 Change Student UI를 표시합니다.
  5. 사용자가 변경 학생 UI와 상호 작용합니다. 사용자가 완료되면 명령이 정보를 검색합니다.
  6. 명령이 모델을 수정하고 이 ChangeStudent UI를 닫습니다.
  7. 명령에서보기가 임을 알립니다.
  8. 보기에는 UI에 명령이 완료 되었음이 표시됩니다.
  9. UI가 업데이트됩니다.
+0

아주 좋은 답변이며 매우 도움이됩니다. –

0

규칙 : 컨트롤러가 작업을 할 수 있도록, 간단한 모델을 유지한다.