Last active
August 18, 2022 12:45
-
-
Save paulogesualdo/e2f9a9d53c4563c2d5c22800dabafb63 to your computer and use it in GitHub Desktop.
Example of the Factory Design Pattern
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// É possível atribuir um objeto a uma variável | |
let pessoa = {}; | |
// O imprimir, será impresso apenas um objeto | |
console.log(`Pessoa antes de atribuições: `); | |
console.log(pessoa); | |
// É possível realizar atribuições a esse objeto | |
pessoa.nome = 'Paulo'; | |
pessoa.sobrenome = 'Gesualdo'; | |
// E também imprimir essas atribuições | |
console.log(`Pessoa após atribuições: `); | |
console.log(pessoa); | |
// É possível fazer uma função pra fabricar objetos | |
function criarObjeto(){ | |
return {}; | |
} | |
// Ao chamar essa função, ela "solta" um objeto, como uma fábrica | |
let objeto = criarObjeto(); | |
// Ao imprimir, é impresso apenas o objeto | |
console.log(`Objeto fabricado: `); | |
console.log(objeto); | |
// Da mesma forma, é possível fazer uma função para fabricar pessoas | |
function fabricarPessoas(nome, sobrenome){ | |
let pessoa = {}; | |
pessoa.nome = nome; | |
pessoa.sobrenome = sobrenome; | |
return pessoa; | |
} | |
// Ao chamar a função, já passar como parâmetros os atributos dessa pessoa | |
let pessoaFabricada = fabricarPessoas('Paulo', 'Gesualdo'); | |
// E imprimir essa pessoa com seus atributos | |
console.log(`Pessoa fabricada: `); | |
console.log(pessoaFabricada); | |
// Também é possível colocar uma função dentro da fábrica, que fabrique um atributo | |
function fabricarPessoas2(nome, sobrenome){ | |
let pessoa = {}; | |
pessoa.nome = nome; | |
pessoa.sobrenome = sobrenome; | |
function nomeCompleto (){ | |
return `${pessoa.nome} ${pessoa.sobrenome}`; | |
} | |
pessoa.nomeCompleto = nomeCompleto; | |
return pessoa; | |
} | |
// Ao chamar a função passando alguns parâmetros iniciais | |
let pessoaFabricada2 = fabricarPessoas2('Paulo', 'Gesualdo'); | |
// É possível imprimir os parâmetros iniciais | |
console.log(`Pessoa fabricada 2: `); | |
console.log(pessoaFabricada2); | |
// Bem como imprimir também o atributo que foi fabricado | |
console.log(`Nome completo:`); | |
console.log(pessoaFabricada2.nomeCompleto()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Pessoa antes de atribuições: | |
{} | |
Pessoa após atribuições: | |
{ nome: 'Paulo', sobrenome: 'Gesualdo' } | |
Objeto fabricado: | |
{} | |
Pessoa fabricada: | |
{ nome: 'Paulo', sobrenome: 'Gesualdo' } | |
Pessoa fabricada 2: | |
{ | |
nome: 'Paulo', | |
sobrenome: 'Gesualdo', | |
nomeCompleto: [Function: nomeCompleto] | |
} | |
Nome completo: | |
Paulo Gesualdo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment