Ir para o conteúdo

3.1. Módulo Padrões de Projeto GoFs Criacionais

Introdução

Este documento detalha a entrega do Foco 01 do Módulo Padrões de Projeto GoFs, que se refere aos Padrões GoF Criacionais. A entrega consiste na apresentação dos GoFs Criacionais implementados no projeto, evidenciando tanto o nível de modelagem quanto o nível de implementação dos padrões de acordo com o documento de diretrizes do projeto.

Os padrões GoF Criacionais são responsáveis por abstrair o processo de instanciação de objetos, fornecendo uma maneira de criar objetos de forma mais flexível e eficiente. Suas utilizações são diversas, podendo ser aplicados em situações onde a criação direta de objetos é custosa ou complexa, ou quando se deseja reutilizar estruturas e comportamentos com dados distintos (Gang of Four, 1994).

Eles são divididos em cinco categorias:

  • Singleton: Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global a ela.
  • Prototype: Permite a criação de novos objetos copiando uma instância existente (o protótipo).
  • Factory Method: Define uma interface para criar um objeto, mas permite que as subclasses alterem o tipo de objetos que serão criados.
  • Abstract Factory: Fornece uma interface para criar famílias de objetos relacionados ou interdependentes sem especificar suas classes concretas.
  • Builder: Define uma interface para construir um objeto, mas permite que as subclasses alterem o tipo de objetos que serão criados.

Metodologia

Processo de Trabalho

Para a implementação dos padrões GoF Criacionais, a equipe adotou uma abordagem que priorizaria o desenvolvimento em código do aplicativo utilizando as tecnologias já previamente definidas durante o planejamento do projeto.

  • React Native: Utilizado para o desenvolvimento do aplicativo móvel.
  • Django: Utilizado para o desenvolvimento do backend do aplicativo.

As histórias de usuário elicitadas durante a última entrega serviram para guiar a equipe no desenvolvimento das funcionalidades do aplicativo, e, consequentemente, na aplicação dos padrões GoF Criacionais.

Nosso objetivo era começar o desenvolvimento das histórias de usuário, e ao longo do desenvolvimento definir quais padrões Criacionais seriam mais adequados para a implementação de cada funcionalidade e documentá-los de acordo com as diretrizes do projeto.

O documento de rastreabilidade com as histórias de usuário detalha mais claramente as relações entre histórias de usuário, issues, branches e pull requests: link

A seguir também o link para as issues no nosso GitHub Projects: link

Reuniões onde foi planejado o processo de trabalho da equipe

Ressalva em Relação as Tecnologias Utilizadas

Durante o desenvolvimento do projeto, a equipe optou por utilizar as tecnologias React Native e Django para o desenvolvimento do aplicativo móvel e do backend, respectivamente. A escolha dessas tecnologias foi feita com base na experiência prévia da equipe e na adequação das tecnologias ao escopo do projeto.

É importante ressaltar que por conta da escolha dessas tecnologias, e da natureza das mesmas, a implementação dos padrões GoF Criacionais pode não ser tão evidente quanto em outras tecnologias mais orientadas à objetos, como Java, por exemplo. No entanto, a equipe se esforçou para aplicar os padrões da melhor forma possível, considerando as particularidades.

Aplicação dos Padrões GoF Criacionais

No React Native e no Django os padrões criacionais podem ser aplicados de diversas formas, como por exemplo, na criação de componentes, na definição de interfaces, na criação de objetos, entre outros. Suas principais vantages são a redução de duplicação de código, a facilidade de manutenção e a reutilização de estruturas e comportamentos. (HEWAWASAM, 2024)

Existem também algumas desvantagens, pois a aplicação dos padrões pode aumentar a complexidade do código e exigir mais tempo de desenvolvimento. Além disso as tecnologias não são necessariamente adequadas para a aplicação de todos os padrões, o que pode dificultar a implementação.

A seguir, os links para os padrões GoF Criacionais implementados no projeto, contendo introdução, metodologia, implementações no código fonte e referências:

As implementações em código em cada documento foram detalhadas com prints do código fonte (utilizando a extensão CodeSnap do VSCode) e links para os arquivos no repositório do projeto, explicando como os padrões foram aplicados e justificando as escolhas feitas.

Referências

  1. GAMMA, Erich et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
  2. HEWAWASAM, Lakindu. Using GoF design patterns with React. Blog Bits and Pieces, 4 maio 2023. Disponível em: https://blog.bitsrc.io/
  3. META. React Native: Getting Started. Disponível em: https://reactnative.dev/docs/getting-started. Acesso em: 6 jan. 2025.
  4. DJANGO SOFTWARE FOUNDATION. Django Documentation: Version 5.1. Disponível em: https://docs.djangoproject.com/en/5.1/. Acesso em: 6 jan. 2025.

Histórico de Versões

Versão Data da alteração Comentário Autor(es) Revisor(es) Data de revisão
1.0 06/01/2025 Criação do documento Felipe Amorim de Araújo Raquel Ferreira Andrade 06/01/2025