Skip to content

Padrões de Projeto GoFs Estruturais Adotados no Projeto

1. Introdução

As interações entre os objetos de um sistema podem gerar fortes dependências entre as classes e as relações entre elas. Essas dependências aumentam a complexidade das eventuais alterações no funcionamento do sistema e prejudicam a manutenibilidade e a escalabilidade do sistema e como consequência disso, o custo da manutenção e do projeto aumentam. Os padrões de projeto estruturais procuram diminuir o acoplamento entre os objetos de um sistema orientado a objetos. Portanto, esses padrões alteram a estrutura, principalmente, no nível de classes.

Nesse documento serão abordados os padrões de projeto Gofs Estruturais que visam a resolução do problema acima citado e que serão utilizados no projeto.

2. Princípios e Padrões

2.1. Facade

Oculta toda a complexidade de uma ou mais classes através de uma Facade (Fachada). A intenção desse Padrão de Projeto é simplificar uma interface, biblioteca ou conjunto complexo de classes. Uma fachada é uma classe que fornece uma interface simples para um subsistema complexo que contém muitas partes que se movem. Ela pode fornecer funcionalidades limitadas em comparação com trabalhar com os subsistemas diretamente.

Justificativa: Será utilizado no contexto da nossa aplicação, porque iremos trabalhar com diversas bibliotecas que basicamente atuam como Facade, ou seja, que "escondem" sua implementação para resolução de um problema complexo.

2.2. Decorator

O decorator permite uma melhor adaptação do objeto, ou seja, ele permite adicionar uma funcionalidade ou um comportamento de forma dinâmica colocando os objetos dentro de um envoltório (wrapper) de outros objetos que contém os comportamentos.

Justificativa: Será utilizado no contexto da nossa aplicação, porque iremos trabalhar com Decorator que o próprio Node.js dá suporte e também os componentes do React.

No código abaixo, temos um exemplo da criação da model Client, utilizando os decorators do orm. Obs: Não é um trecho do nosso código mas encaixa no contexto da nossa aplicação

Decorator

Figura 1. Exemplo do padrão GoFs de Decorator

2.3. Proxy

O proxy funciona como uma barreira permitindo controlar o acesso ao objeto original funcionando como se fosse um interceptador. Como por exemplo, caso tenhamos endpoint na nossa api que não podem ser acessados por qualquer um, podemos implementar um proxy que faça validação de ip, User agent ou até mesmo de token. É um padrão de projeto que nos permite maior segurança e controle a determinados serviços.

Justificativa: Será utilizado no contexto da nossa aplicação, porque iremos trabalhar com middleware, como por exemplo, na verificação de token.

No código abaixo, temos um exemplo da utilização de middlewares funcionando como um proxy de autenticação no node. Obs: Não é um trecho do nosso código mas encaixa no contexto da nossa aplicação

Proxy

Figura 2. Exemplo do padrão GoFs de Proxy

3. Referências Bibliográficas

Histórico de Revisões

Data Versão Descrição Autor(es)
29/08/2021 0.1 Adicionando introdução Abner Filipe
29/08/2021 1.0 Adiciona Tópicos Ítalo Alves
30/08/2021 2.0 Adiciona Tópicos Decorator e Proxy Abner Filipe
05/09/2021 2.1 Destaca e revisa as justificativas Ítalo Alves
05/09/2021 2.2 Revisão do documento Sergio Cipriano, Emily Dias
20/09/2021 3.0 Adição de imagens e revisão do documento Lucas Boaventura