Design patterns Javascript

Publicado por Diogo Agra Alexandria em

Builders para classes com campos obrigatórios e opcionais.

Seguindo ideia que a a melhor maneira de aprender é ensinando e estreiar os post de tecnologia da Garagem!

Trarei aqui um exemplo de como podemos escrever construtores para objetos com campos obrigatórios e opcionais em Javascript.

Vamos lá!

Tendo as seguintes classes, declaramos seus construtores e instanciamos um objeto do tipo User, onde o campo nome é obrigatório e os outros campos são opcionais:

O log desse objeto retorna o seguinte resultado:

Os campos que não foram passados são preenchidos automaticamente com o tipo undefined.

O problema começa a aparecer se inserirmos o campo adress do construtor, pois precisamos inserir os valores na ordem da declaração do construtor:

Após a inserção do campos adress temos o seguinte objeto:

Para resolver esse problema, abordaremos dois tipos de solução. Na primeira solução iremos criar a classe UserBuilder que recebe apenas o parâmetro obrigatório da classe User e para os outros parâmetros usaremos métodos dessa classe para poder adicionar esses valores.

A classe User não será mais usada diretamente para instanciar um objeto e também só receberá o campo obrigatório.

O objeto instanciado agora só terá os atributos preenchidos.

E para adicionar mais campos, usaremos os métodos as classe UserBuilder.

Podemos encadear os métodos já que eles sempre retornam o mesmo objeto para adicionar mais atributos, essa é uma forma tradicional de criar um Builder e deixa bem claro no código oque está acontecendo com o objeto.

A outra forma de resolver o problema com atributos obrigatórios e opcionais, é mais focada em javascript e “clean” para o código.

Um jeito fácil de passar parâmetros opcionais para um construtor é utilizando um Objeto Javascript, ou JSON.

Com as novidades do javascript, podemos especificar identificações para quais campos serão esperados nesse objeto e caso não seja passado nenhum objeto definimos como padrão um objeto vazio.

Caso os campos do objeto não sejam preenchidos, irão aparacer com o valor undefined, que em comparação ao exemplo anterior é melhor do que simplesmente não existir o atributo se não for inputado.

Para finalizar, algo interessante é que podemos definir valor padrões para os atributos do objeto caso não sejam passados nenhum valor, por exemplo:

E caso passarmos um valor, irá substituir o padrão.

Espero que esse post contribua com algo para você como contibuiu pra mim.

O vídeo que me influenciou a escrever é esse aqui em baixo, dá uma olhada lá:


4 comentários

Alvaro H. Beckerig · 24/01/2020 às 16:13

Caramba, Baby Shark! Muito bom! Agora sim aprendo JS! Parabéns pelo artigo. 🙂

Henrique C.S. Bezerra · 25/01/2020 às 13:15

Artigo bastante claro e informativo no que deseja passar! A explicação por etapas feita auxiliará muito na execução de tarefas em javascript! Parabéns!

Elizabeth lins · 25/01/2020 às 13:45

Parabéns Diogo!! Bem simples da forma que foi colocado, apesar de não ser da área de dev, consegui entender! Hahaha thanksss baby shark ♥️

Raquel · 25/01/2020 às 16:29

Conteúdo top! Muito bom! 👏🏻

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: