/ / O MFC é baseado em algum padrão de design? Em caso afirmativo, qual padrão de design? - padrões de design, mfc

O MFC é baseado em qualquer padrão de design? Em caso afirmativo, qual padrão de design? - padrões de design, mfc

O MFC é baseado em algum padrão de design? Em caso afirmativo, qual padrão de design?

Respostas:

7 para resposta № 1

MFC e padrões de design

Como todos sabemos, MFC é uma das classes popularesbibliotecas usadas por programadores C ++. A história de sucesso por trás do MFC é sua arquitetura de classe e princípios de design adotados pelos desenvolvedores do MFC, o que o torna uma das bibliotecas popularmente reutilizadas.

O foco principal é mostrar como os padrões são usados ​​no MFC. Estaremos vendo o uso de três padrões na biblioteca MFC.

Criativo: Padrão Singleton

A primeira etapa em qualquer aplicativo MFC é a criaçãodo objeto do aplicativo (objeto da classe derivada de CWinApp). Deve haver apenas um objeto de aplicativo em uma instância do aplicativo MFC. CWinApp foi projetado para garantir que apenas o objeto do aplicativo esteja presente em uma determinada instância. CWinApp e seus descendentes são chamados de classes singleton. Uma classe (CWinApp ou seu descendente) que garante no máximo UM objeto de seu tipo em um determinado momento e fornece um ponto de acesso global (método AfxGetApp ()) para esse objeto é uma classe Singleton.

Como este princípio é aplicado repetidamentepara resolver problemas recorrentes de "criação" de objetos, isso se torna um padrão. O Singleton Pattern garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global para ela. O artigo Criando Objetos Singleton usando Visual C ++ fala sobre diferentes abordagens para a implementação de Singletons.

Estrutural: Padrão de Ponte

Bridge Pattern tem tudo a ver com desacoplar umabstração (interface) de sua implementação para que as duas possam variar independentemente. No MFC, o processo de armazenamento / recuperação de um objeto de / para um mecanismo de persistência (como um arquivo) é chamado de serialização. MFC usa o padrão de ponte para implementar a serialização. As classes CArchive e CFile implementam a serialização de objetos. A classe CArchive fornece a interface para escrever / ler um objeto de / para um mecanismo de persistência, enquanto o CFile e suas subclasses fornecem implementação para diferentes mecanismos de persistência, como memória, arquivo de disco, soquetes etc.

Um objeto CArchive é configurado com um objeto declasse CFile (ou uma classe derivada) durante sua construção, da qual obtém as informações necessárias para a serialização, incluindo o nome do arquivo e o tipo da operação solicitada (uma leitura ou gravação). O cliente que executa a operação de serialização pode usar o objeto CArchive sem considerar o mecanismo de persistência implementado pelas classes CFile.

O artigo Bridge Pattern - Bridging the gap entre Interface e Implementation fala sobre o Bridge pattern em detalhes.

Comportamental: Padrão do Observador

O Observer Pattern tem como objetivo "Definir umdependência um-para-muitos entre objetos para que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente ". Um objeto que está sujeito a mudança é chamado de Assunto e um objeto que depende do estado do Assunto é chamado um observador.

MFC usa uma variante Document / View do ObserverPadrão. A famosa arquitetura Documento / Visualização do MFC usa esta variante. Um documento contém o objeto de dados e atua como um Assunto. Uma visualização é um objeto de janela por meio do qual o usuário atualiza o documento e atua como um Observador. Um documento pode ter múltiplas visualizações Sempre que os dados do documento são alterados por uma das visões, ele atualiza o documento chamando o método UpdateAllViews, com dica opcional sobre a modificação. Para informar sobre a mudança para outras visões, o objeto de documento chama o método OnUpdate para cada visão anexada para ele (exceto a visão que chamou UpdateAllViews). As classes de visão derivadas podem substituir o método OnUpdate e atualizar-se consultando os dados do documento.


1 para resposta № 2

Inclui vários, incluindo Model-View-Controller, Cadeia de Responsabilidade e Método de fábrica.


1 para resposta № 3

Não tenho codificado MFC há algum tempo, mas no passado eu acredito que o Padrão de visualização de documento era o "padrão".