Aplicação GoF's Criacionais
1. Versionamento
Versão | Data | Descrição | Autor(es) |
---|---|---|---|
1.0 | 16/03/2022 | Abertura do documento | João Moura e Rafael Ramos |
1.1 | 16/03/2022 | Adição da aplicação do Factory Method | João Moura e Rafael Ramos |
1.2 | 16/03/2022 | Adição da aplicação do Builder | João Moura e Rafael Ramos |
1.3 | 18/03/2022 | Adição dos exemplos de modelagem | João Moura e Rafael Ramos |
1.3.1 | 18/03/2022 | Correções de texto | João Moura e Rafael Ramos |
1.3.2 | 19/03/2022 | Revisão por pares | Brenno e Thiago |
2. Introdução
Após estudo dos padrões GoFs criacionais, iremos demonstrar como eles podem ser aplicados no nosso contexto de estudo do backend, isso é, utilizando Python em conjunto com o Framework Django, de forma que os padrões possam ser utilizados a fim de colaborarem com um melhor desenvolvimento do código e padronização.
3. Metodologia
A metodologia utilizada para a elaboração do documento consistiu na reunião dos membros responsáveis por esta tarefa via Discord, onde foram levantados alguns padrões de GoF's criacionais encontrados ou não no código desenvolvido para o projeto. Sendo assim, serão demonstrados dois padrões de projetos, sendo eles: Factory Method e Builder. Vale ressaltar que o documento está sujeito a atualizações, caso o grupo sinta necessidade de apresentar novos padrões, ou até mesmo atualizar os já existentes.
4. GoF's Criacionais
4.1 Factory Method
A Factory Method é um padrão de projeto criacional que através de herança e polimorfismo permitem às classes herdarem métodos que serão implementados apenas pelas subclasses.
Entendendo esse conceito, parte-se então para sua implementação no backend. O django-rest utiliza as ideias de serializers, que "traduzem" as informações. Nessa implementação, existem diversos métodos que podem ser sobrescritos e que repassam suas responsabilidades para as subclasses respectivas, sendo viável a utilização desse padrão de projeto criacional.
Para tanto, foi necessário ser feita uma refatoração dos modelos já existentes de Usuário, Produtor e Técnico para comportarem esse padrão. Uma dessas alterações foi a retirada completa do fluxo create existente no serializer de Usuário, passando-se as responsabilidades desse método para as classes de Produtor e Técnico. Dessa forma, o código resultante que representa esse GoF Criacional pode ser visto abaixo.
4.1.1 Modelagem
Figura 1: Modelagem do método de fábrica no projeto
Fonte: Autores
4.1.2 Aplicação
Figura 2: Serializer de usuário
Fonte: Autores
Figura 3: Serializer de produtor
Fonte: Autores
Figura 4: Serializer de técnico
Fonte: Autores
4.2 Builder
O Builder é um padrão de projeto criacional que permite a instanciação de um objeto complexo através de uma simples solicitação, mantendo todo o processo complexo de criação oculto para o cliente.
Um importante requisito do nosso projeto é a conversão dos dados de uma caderneta para o formato pdf que será utilizado quando o produtor encerra uma plantação, este pdf pode ser considerado um objeto complexo permitindo a implementação do padrão Builder para permitir uma construção simples e rápida.