GoF Abstract Factory
Histórico de versão
Data | Versão | Descrição | Autor(es) |
---|---|---|---|
01.04.2021 | 0.1 | Criação do documento | Rafaella Junqueira Isabella Carneiro |
01.04.2021 | 1.0 | Adição do diagrama UML | Rafaella Junqueira Erick Giffoni |
Participantes
- Rafaella Junqueira
- Isabella Carneiro
- Erick Giffoni
Introdução
O Abstract Factory é um padrão que permite a criação de famílias de objetos relacionados ou dependentes por meio de uma única interface e sem que a classe concreta seja especificada. O objetivo deste padrão é isolar a criação de objetos de seu uso e criar famílias de objetos relacionados sem ter que depender de suas classes concretas, permitindo a introdução de novos tipos derivados sem que haja alteração ao código da classe base.
Essa prática ajuda a excluir a dependência entre o cliente e a classe dos objetos usados por ele. Este padrão é usado quando se deseja fornecer uma biblioteca de classes e revelar sua interface mas não sua implementação, assim, não permite-se que objetos sejam diretamente criados com new.
Essa prática ajuda a excluir a dependência entre o cliente e a classe dos objetos usados por ele. Este padrão é usado quando se deseja fornecer uma biblioteca de classes e revelar sua interface mas não sua implementação, assim, não permite-se que objetos sejam diretamente criados com new.
Metodologia
A documentação deste padrão foi realizada em conjunto por meio de reunião virtual utilizando a plataforma Discord e para a modelagem utilizou-se a ferramenta Lucidchart.
Aplicação no projeto
O projeto utiliza diversas interfaces que derivam de uma interface principal denominada CrudRepository, e como exemplo disso, há a interface PessoaRepository. Deste modo, entende-se que a PessoaRepository representa a fábrica abstrata enquanto a CrudRepository representa a fábrica concreta.
Dada a organização de pastas da aplicação, garante-se que os arquivos do tipo service interagem com as fábricas abstratas, no caso representado, com a PessoaRepository.
Modelagem UML
O diagrama UML representa a forma como o padrão está sendo empregado no projeto, exemplificando o uso da PessoaRepository por meio da PessoaSerice. No diagrama, a CrudRepository representa o que seria a fábrica concreta, a PessoaRepository a fábrica abstrata e a PessoaService atua como cliente. A modelagem foi feita apenas para fins de entendimento, deste modo, os atributos e métodos da classe foram suprimidos.
Autores: Rafaella Junqueira e Erick Giffoni
Vale lembrar que esse padrão está sendo amplamente utilizado no projeto, entretanto, para fins de explicação e para não tornar este documento longo, utilizamos apenas exemplos relacionados à classe Pessoa presente na aplicação.
Referências
DevMedia, Entendendo os conceitos dos Padrões de Projetos em Java. Disponível em https://www.devmedia.com.br/entendendo-os-conceitos-dos-padroes-de-projetos-em-java/29083
Refactoring Guru, Abstract Factory. Disponível em https://refactoring.guru/pt-br/design-patterns/abstract-factory Acesso em 01 de abril de 2021.