MFC는 어떤 디자인 패턴을 기반으로합니까?MFC는 어떤 디자인 패턴을 기반으로합니까?
답변
Model-View-Controller, Chain of Responsibility 및 Factory Method을 포함하여 몇 가지가 포함됩니다.
Document-View가 Model-View-Controller와 동일하다고 말하는 것은 다소 무리입니다. 컨트롤러의 임무는 문서 및보기에 임시 방식으로 혼합됩니다. –
MFC를 꽤 오랫동안 코딩하지 않았지만, 다시 생각해 보면 Document-View pattern이 "기본"이라고 생각합니다.
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 메서드를 재정의하고 문서에서 데이터를 쿼리하여 자체 업데이트 할 수 있습니다.
- 1. 어떤 디자인 패턴을 사용해야합니까?
- 2. 어떤 디자인 패턴을 선택해야합니까?
- 3. 가져 오기/내보내기에 어떤 디자인 패턴을 사용해야합니까?
- 4. 이 유스 케이스에서는 어떤 디자인 패턴을 사용해야합니까?
- 5. 로깅이 필요할 때 어떤 디자인 패턴을 고려합니까?
- 6. /MFC는
- 7. OOP는 수학의 어떤 지점을 기반으로합니까?
- 8. 디자인 패턴을 제안하십시오
- 9. 디자인 패턴을 찾고
- 10. 자바로 디자인 패턴을 연습하십시오.
- 11. 디자인 패턴을 추천하십시오.
- 12. 디자인 패턴을 제안 하시겠습니까?
- 13. 언제 디자인 패턴을 리팩터링합니까?
- 14. 디자인 패턴을 찾고
- 15. 디자인 패턴을 넘어?
- 16. 디자인 패턴을 문의하십시오
- 17. Feedly는 어떤 아약스 프레임 워크를 기반으로합니까?
- 18. 어떤 디자인 패턴을 사용해야합니까? 봄 프레임 워크 사용
- 19. Person-Role 관계를 모델링하기 위해 어떤 디자인 패턴을 사용해야합니까?
- 20. 데이터베이스 액세스 응용 프로그램에서 어떤 디자인 패턴을 적용해야합니까?
- 21. 어떤 디자인 패턴을 사용하는 것이 가장 중요하다고 생각하십니까?
- 22. 그런 대화 상자를 만들기 위해 어떤 디자인 패턴을 사용해야합니까?
- 23. 어떤 패턴을 찾고 있습니까?
- 24. 어떤 디자인 패턴/RTTI
- 25. AOP의 디자인 패턴을 알고 있습니까?
- 26. 몇 가지 디자인 패턴을 배울 수있는 시간이 제한되어 있다면 어떤 패턴을 배워야합니까?
- 27. Android 플랫폼을 활용하려면 어떤 패턴을 이해해야합니까?
- 28. 어떤 디자인 패턴입니까?
- 29. Html 위젯 생성기에서 어떤 패턴을 고려해야합니까?
- 30. 이 상황에 어떤 패턴을 사용해야합니까?
"언어를 사용하여 물건을 구현하면 절반 밖에 이해하지 못하고 물건을 큰 양동이에 넣고 흔들어주세요"라는 패턴이 있습니다. –