mfc mvc 패턴 예제

주소록 응용 프로그램을 예로 들어 보겠습니다. 모델은 사람 개체 목록이며 보기는 사람 목록을 표시하는 GUI 창이며 컨트롤러는 “사람 삭제”, “사람 추가”, “전자 메일 사람” 등과 같은 작업을 처리합니다. 다음 예제는 모델이 뷰에 종속되므로 MVC를 사용하지 않습니다. Model-View-Controller 아키텍처 패턴에서 모델은 응용 프로그램 데이터, 뷰, 사용자에게 데이터를 표시하는 시각적 구성 요소를 나타내며 컨트롤러는 다양한 입력 장치와 사용자의 상호 작용을 관리하고 이를 해석합니다. 모델에 영향을 주어야 합니다. 영향을 받으면 모델은 사용자에게 프레젠테이션을 업데이트할 필요성을 뷰에 알립니다. 이것은 다소 단순한 설명입니다. 그러나 보다 완전한 설명을 원한다면 MVC 패턴과 디자인의 동기를 설명하는 많은 좋은 기사와 책이 있습니다. 아주 좋은 소스 는 위키백과 [^]에서 찾을 수 있습니다. 2 / 문제는 참조를 사용하는 대신 복사하여 생성자라고한다는 것입니다. 또는 주소.

예를 들어 바꾸기: 비공개: 모델 모델; 뷰 보기; 에 대 한: 개인: 모델 *모델; 보기 *보기; 그리고: void SetView (const View & view) { 이->보기 = 보기; } By: void SetView(const View & view) { 이->보기 = & } 다른 클래스 및 메서드에 대해 너무 오래 사용됩니다. 위의 예에서 Person 클래스는 뷰에 대해 아무것도 알지 못합니다. PersonListController는 모델을 변경하고 뷰를 업데이트하는 것을 모두 처리합니다. 뷰 창은 컨트롤러에게 사용자 작업에 대해 알려줍니다(이 경우 사용자가 사람의 그림을 변경했다는 것을 컨트롤러에게 알려줍니다). 이 패턴은 각 구성 요소의 코드를 통합하면서 데이터를 표시하거나 저장하는 방법에서 데이터를 조작하는 방법을 분리합니다. 즉, 프로그램에 사용되는 데이터(모델)를 유지하는 앱과 프로그램의 시각적(보기) 구성 요소를 서로 분리하여 각각 프로그램의 논리를 포함하는 컨트롤러와만 상호 작용하는 방법입니다. 뷰와 모델은 컨트롤러와만 상호 작용합니다. 모델은 데이터 처리에 직접 반응합니다.

예를 들어 모델 구성 요소는 MySQL 데이터베이스에 액세스합니다. 모델은 뷰 또는 컨트롤러와 같은 다른 구성 요소에 의존해서는 안 됩니다. 즉, 모델은 해당 데이터를 표시하는 방법이나 업데이트 시기를 신경 쓰지 않습니다. MFC 경험이 있는 사람이라면 누구나 알 수 있듯이 문서/보기 아키텍처는 MVC 패턴의 변형입니다. MFC에서 CDocument 클래스는 모델을 나타내고 CView 클래스는 뷰와 컨트롤러를 모두 나타냅니다. 이 문서에서 제시된 모델 뷰-컨트롤러 프레임워크는 뷰와 컨트롤러의 분리를 MFC 응용 프로그램에 다시 가져올 것입니다. 여전히 MVC 디자인 패턴을 존중합니까? 뷰에 모델 의 복사본을 사용하면 일부 “렌더링 처리”가 허용될 수도 있습니다. 예를 들어, 실제 신호(리얼의 어레이)를 보유하는 모델을 갖는 뷰는 해당 스펙트럼의 FFT 시각화를 구현할 수 있다. MVC 설계 패턴은 뷰와 모델 사이에 컨트롤러 클래스를 삽입하여 모델 뷰 종속성을 제거합니다. 종속성을 제거하면 모델과 뷰를 수정하지 않고 다시 사용할 수 있습니다.

Posted in Uncategorised