설명 방법은 이벤트 및 게시/구독 모델을 사용하는 것이 었습니다. 기본적으로 모델은 데이터 일 뿐이며 뷰/GUI/UI에 대한 지식이 없습니다. 모델은 일반적으로 데이터에서 작동하는 추상 객체이며 작업 및 기타 등등을 수행 할 수 있습니다.MVC를 이해하려고합니다. 이게 옳은 거니?
뷰는 모델의 변경 내용에 응답하고 일반적으로이 데이터를 사용자에게 표시하는 다른 클래스입니다. 이전에는 뷰와 모델 간의 결합없이 이것이 발생할 수있는 방법을 알지 못했지만 이벤트로 설명하면 혼란이 훨씬 잦아 들었습니다. 이것은 재미있는 일이 발생할 때 모델 자체가 발생시키는 공개 이벤트를 포함한다는 것을 의미합니까? 예를 들어, 체스 게임을 프로그래밍했다면, 조각이 움직일 때, 모델은 필요한 정보 (어느 부분에서 어디로 옮겼습니까)로 뷰를 구독 할 수있는 PieceMoved
의 이벤트를 발생시킵니다. 이벤트를 수행 한 다음 이전 사각형에서 새 사각형으로 움직이는 조각의 애니메이션을 표시합니다.
나를 혼란스럽게하는 부분은 컨트롤러의 정확한 특성입니다. 새로운 정보로 모델과 뷰를 제공하는 방법을 이해하는 데 문제가 있습니다. 컨트롤러가 모델과 뷰에 대한 참조를 포함하고 있다고 생각합니다. Chess 예제를 유지하면서 컨트롤러는 사용자 입력 (예 : 조각 이동)에 응답 한 다음 모델로 이동하고자하는 부분을 제안합니다. 그런 다음 모델은이 정보를 사용하여 합법적 인 이동인지 여부를 확인하고 적절하면 모델을 업데이트하고 뷰가 반응하고 이에 따라 그래픽 영역을 업데이트하는 PieceMoved
이벤트를 발생 시키십시오.
마지막으로 컨트롤러가 이동하려는 부분을 어떻게 확인합니까? 그 유형의 것이보기에 크게 묶여있는 것처럼 보입니다 (이동하려는 조각을 먼저 클릭 한 다음 대상 사각형을 이동하는 것이 포함됩니다). 컨트롤러가 마우스 클릭에 응답하여 모델에 해당 좌표를 전송한다고 상상해 봅니다.하지만 모델에서 선택한 좌표를 변환하는 방법을 모델이 어떻게 알 수 있습니까? 그것이보기에 크게 묶여 있지 않습니까? 뷰가 모델과 컨트롤러에 단순히 응답하는 대신 로직 처리를 수행해야하지만 뷰/모델 믹스 대신 올바른 뷰가 아닌 것처럼 보입니다.
긴 질문을 가지고 전체 대답은 더 긴 것, 다른 사람들처럼, MVC (I의 내 자신의 버전입니다. 먼저 몇 권의 책을 읽으십시오. 완전히 주제에서 벗어나지는 않지만 너무 광범위합니다. –
나는 질문을보다 구체적이고 짧게하려고 노력할 것이다. 좋아, 잘하면 더 좋다. –