2010-03-18 7 views

답변

1

Model-View-Controller, Chain of ResponsibilityFactory Method을 포함하여 몇 가지가 포함됩니다.

+1

Document-View가 Model-View-Controller와 동일하다고 말하는 것은 다소 무리입니다. 컨트롤러의 임무는 문서 및보기에 임시 방식으로 혼합됩니다. –

7

MFC 및 디자인 패턴

우리 모두가 알다시피, MFC는 C++ 프로그래머가 사용하는 인기있는 클래스 라이브러리 중 하나입니다. MFC의 성공 사례는 MFC 개발자가 채택한 클래스 아키텍처 및 디자인 원칙으로, 널리 사용되는 라이브러리 중 하나입니다.

주요 초점은 MFC에서 패턴을 사용하는 방법을 보여주는 것입니다. 우리는 MFC 라이브러리에서 세 가지 패턴의 사용법을 보게 될 것입니다.

창조적 : 싱글 패턴은 MFC 애플리케이션에서

첫번째 단계는 애플리케이션 객체 (은 CWinApp에서 파생 된 클래스의 객체)의 창조이다. MFC 응용 프로그램의 인스턴스에는 응용 프로그램 개체가 하나만 있어야합니다. CWinApp는 응용 프로그램 개체 만 주어진 인스턴스에 있는지 확인하도록 설계되었습니다. CWinApp과 그 자손은 Singleton Classes입니다. 주어진 시간에 해당 유형의 개체를 최대로 보장하고이 개체에 전역 액세스 지점 (AfxGetApp() 메서드)을 제공하는 클래스 (CWinApp 또는 그 자손)는 Singleton 클래스입니다.

이 원리가 되풀이되는 반복적 인 객체 "창조적 인"문제를 해결하기 위해 반복적으로 적용되기 때문에 이것은 하나의 패턴이됩니다. 싱글 톤 패턴 (Singleton Pattern)은 클래스가 오직 하나의 인스턴스만을 가지며 전역 액세스 포인트를 제공한다는 것을 보장합니다. Visual C++를 사용하여 싱글 톤 객체 생성하기 기사는 싱글 톤을 구현하는 다양한 접근법에 대해 설명합니다.

구조 : 브리지 패턴

브리지 패턴 모두 두 독립적으로 변화 할 수 있도록 구현에서 추상화 (Interface)를 디커플링에 관한 것이다. MFC에서 파일과 같은 지속성 메커니즘에 객체를 저장/검색하는 프로세스를 직렬화라고합니다. MFC는 브리지 패턴을 사용하여 직렬화를 구현합니다. CArchive 및 CFile 클래스는 개체 직렬화를 구현합니다. CArchive 클래스는 메모리와 디스크 파일, 소켓 등과 같은 다양한 지속성 메커니즘에 대한 구현을 제공하는 반면 CFile과 하위 클래스는 지속성 메커니즘에 쓰기/읽기 인터페이스를 제공합니다.

CArchive 개체는 다음과 같이 구성됩니다. CFile 클래스 (또는 파생 클래스)의 생성 과정에서 요청 된 작업의 파일 이름 및 형식 (읽기 또는 쓰기)을 비롯하여 필요한 serialization 정보를 가져 오는 클래스입니다. 직렬화 작업을 수행하는 클라이언트는 CFile 클래스에 의해 구현 된 지속성 메커니즘을 고려하지 않고 CArchive 개체를 사용할 수 있습니다.

브리지 패턴 - 인터페이스와 구현 사이의 간격을 메우는 것으로 브리지 패턴에 대해 자세히 설명합니다.행동

: 관찰자 패턴은 "하나의 개체가 상태를 변경할 때, 모든 종속 통지 자동으로 갱신되도록 개체 간의 일대 의존성 정의"하고자

옵서버 패턴. 변경 대상이되는 개체를 제목이라고하고 해당 주체의 상태에 종속 된 개체를 관찰자라고합니다.

MFC는 Observer Pattern의 Document/View 변형을 사용합니다. MFC의 유명한 Document/View 아키텍처는이 변형을 사용합니다. 문서는 데이터 객체를 포함하고 Subject로 작동합니다. 뷰는 사용자가 문서를 업데이트하고 관찰자 역할을하는 윈도우 객체입니다. 문서는 여러보기를 가질 수 있습니다. 문서의 데이터가 뷰 중 하나에 의해 변경 될 때마다 UpdateAllViews 메서드를 호출하여 문서를 업데이트하고 옵션에 대한 힌트를 추가로 수정합니다. 다른 뷰에 대한 변경 사항을 알리기 위해 문서 객체는 UpdateAllViews를 호출 한 뷰를 제외하고 뷰에 첨부 된 각 뷰에 대해 OnUpdate 메서드를 호출합니다. 파생 뷰 클래스는 OnUpdate 메서드를 재정의하고 문서에서 데이터를 쿼리하여 자체 업데이트 할 수 있습니다.

관련 문제