GOFs Criacionais
Versionamento
Data | Versão | Descrição | Autores |
---|---|---|---|
03/09/2021 | 1.0 | Criação do Documento | Hugo Bezerra, Lucas Rodrigues, Marcos Adriano |
14/09/2021 | 1.1 | Adição das imagens | Hugo Bezerra, Kleidson, Lucas Rodrigues, Lucas Gabriel |
15/09/2021 | 1.2 | Adição Singleton | Kleidson, Gabriel Batalha, Lucas Gabriel, Lucas Rodrigues |
15/09/2021 | 1.3 | Adição Prototype | Davi Antônio |
16/09/2021 | 1.4 | Corrigir erros ortográficos e melhorar referencial teórico | Davi Antônio |
20/09/2021 | 1.5 | Revisão do documento e remoção do Singleton | Kleidson, Gabriel Batalha, Lucas Gabriel, Lucas Rodrigues |
20/09/2021 | 1.6 | Revisão ortográfica e gramatical | Davi Antônio, Wellington Jonathan |
Factory Method
Introdução
O Factory Method é um dos padrões de criação de objetos descritos no livro Design Patterns: Elements of Reusable Object-Oriented Software (JOHNSON, Eric et al.; 1995) da seguinte maneira: defina uma interface para a criação de objetos e deixe para a subclasse a decisão de qual classe instanciar.
Modelagem
Autores: Gabriel Batalha, Kleidson Alves, Lucas Gabriel, Lucas Rodrigues
Aplicação
Comentário
No projeto, utilizamos o Factory method para criação dos diferentes tipos de botões. A utilização desse padrão de projeto faz com que não seja necessário o conhecimento direto de cada construtor das diferentes classes dos botões. Por isso, utiliza-se a classe FactoryButton especificando o tipo de botão desejado, obtendo a instância de uma das classes.
Prototype
O padrão de protótipo cria novos objetos a partir de um objeto original ou base, o chamado protótipo, que implementa um método de clonagem que pode ou não especificar o estado desejado. Segundo JOHNSON, Eric et al., esse padrão é adequado para criar objetos com poucos estados possíveis dinamicamente, já que nessa situação não é necessária a complexidade adicionada com o uso de hierarquias com fábricas.
Modelagem
(JOHNSON, Eric et al.; 1995)
Há muitas maneiras de se implementar esse padrão. Algumas implementações, sugeridas pelo livro Design Patterns (JOHNSON, Eric et al.; 1995), possuem maior complexidade, assemelhando-se a uma fábrica, permitindo a instância de classes a partir de um repositório de protótipos disponíveis.
Aplicação
O exemplo autoral a seguir é uma adaptação do padrão Prototype. A classe não realiza uma interface ou estende uma classe abstrata com um método de clonagem. Entretanto, o método de clonagem permite que um cliente especifique, usando os parâmetros nomeados da linguagem Dart, o estado desejado do objeto que será criado como clone.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Nessa implementação, um parâmetro nomeado que não é informado não causará modificação no atributo referente a ele. Isso possibilita a redução na criação de objetos para os atributos, já que um atributo não modificado simplesmente utilizará a referência do objeto original.
Referências
PADRÕES de PROJETO. Disponível em: https://refactoring.guru/pt-br/design-patterns. Data de acesso: 03/09/2021
PADRÕES Gof. Disponível em: http://www.facom.ufu.br/~bacala/ESOF/05b-Padrões%20Gof.pdf. Data de acesso: 03/09/2021
Design Patterns: Padrões “GoF”. Disponível em: https://www.devmedia.com.br/design-patterns-padroes-gof/16781. Data de acesso: 03/09/2021
Flutter Design Patterns: 10 — Factory Method. Disponível em:https://medium.com/flutter-community/flutter-design-patterns-10-factory-method-c53ad11d863f. Data de acesso: 10/09/2021
Flutter Design Patterns: 1 — Singleton. Disponível em: https://medium.com/flutter-community/flutter-design-patterns-1-singleton-437f04e923ce. Data de acesso: 14/09/2021
Singleton em TypeScript. Disponível em: https://refactoring.guru/pt-br/design-patterns/singleton/typescript/example#lang-features. Data de acesso: 14/09/2021
JOHNSON, Eric et al. Design Patterns: Elements of Reusable Object-Oriented Software. 1995.