MVC 용어정의 1979 12 10 - ChoDragon9/posts GitHub Wiki


title: MVC 용어정의 1979/12/10 sidebar: auto

이 문서는 MVC 용어를 최초로 정의한 Model-View-Controller : Trygve Reenskaug : 1979.12.10에 대한 내용이다.

모델

모델은 지식을 나타냅니다. 모델은 단일 객체가 될 수도 있고(따라서 흥미 없을 수도 있고), 어떤 객체의 구조일 수도 있습니다.

모델과 모델의 파트 사이에 일 대 일 대응 관계가 있어야 하며, 다른 한편으로는 모델의 소유자가 인식하는 대표 세계도 있어야 합니다. 따라서 모델의 노드는 문제의 식별 가능한 부분을 나타내야 합니다.

모델의 노드는 모두 같은 문제 수준에 있어야 하며, 문제 지향 노드(예: 달력 약속)와 구현 세부 정보(예: 단락)를 혼합하는 것은 혼란스럽고 잘못된 형태로 간주합니다.

뷰는 모델의 시각적 표현입니다. 뷰는 보통 모델의 특정 속성을 강조하고 다른 속성을 억압할 것입니다. 따라서 프리젠테이션 필터 역할을 합니다. 뷰는 모델(또는 모델의 파트)에 연결되며, 모델로부터 프리젠테이션에 필요한 데이터를 질문하여 얻습니다. 또한, 적절한 메시지를 보내 모델을 업데이트할 수 있습니다. 이 모든 질문과 메시지는 모델의 용어에 있어야 합니다. 따라서 뷰는 그것이 나타내는 모델의 속성의 의미론을 알아야 합니다.

컨트롤러

컨트롤러는 사용자와 시스템 간의 연결입니다. 화면의 적절한 위치에 자신을 나타낼 수 있는 관련 뷰를 배치하여 사용자에게 입력을 제공합니다. 사용자에게 메뉴나 명령어 및 데이터를 제공하는 다른 수단을 제시함으로써 사용자 출력의 수단을 제공합니다. 컨트롤러는 이러한 사용자와 출력을 수신하여 적절한 메시지로 변환하고 이러한 메시지를 하나 이상의 뷰에 전달합니다.

컨트롤러는 뷰를 보완해서는 안 되며, 예를 들어 노드 사이에 화살표를 그려서 노드의 뷰를 연결해서는 안 됩니다.

반대로, 뷰는 마우스 작업 및 키 입력과 같은 사용자 입력에 대해 절대 알지 않아야 합니다. 사용자 명령의 모든 시퀀스를 정확하게 재현하는 메시지를 뷰로 보내는 컨트롤러에서 항상 메소드를 작성할 수 있어야 합니다.

에디터

컨트롤러는 모든 뷰에 연결되며, 컨트롤러의 파트이라고 불립니다. 일부 뷰는 사용자가 뷰에 의해서 표시되는 정보를 수정할 수 있도록 허용하는 특별한 컨트롤러 즉 에디터를 제공합니다. 에디터는 컨트롤러와 뷰 사이의 경로로 연결될 수 있으며, 컨트롤러의 확장 역할을 할 것입니다. 편집 프로세스가 완료되면 에디터를 경로에서 제거하고 폐기합니다.

에디터는 연결된 뷰의 은유를 통해 사용자와 통신한다는 점에 유의해야 합니다. 따라서 에디터는 뷰와 밀접하게 연관되어 있습니다. 컨트롤러는 다른 적절한 소스가 없는 뷰를 요청하여 에디터와 연결이 됩니다.