Funções fábrica
As factory functions são funções projetadas para criar e retornar objetos. Essas funções são chamadas de “fábricas” porque têm o propósito específico de construir instâncias de objetos de maneira padronizada, muitas vezes aplicando lógica ou configurações específicas durante o processo de criação.
Exemplo
Considere o exemplo de uma factory function que cria objetos representando pessoas:
function criarPessoa(nome, sobrenome, altura, peso) {
return {
nome,
sobrenome,
altura,
peso,
falar(assunto) {
return `${this.nome} está falando sobre ${assunto}`;
},
imc() {
const imc = this.peso / this.altura ** 2;
return imc.toFixed();
},
};
}
const pessoa = criarPessoa("Luiz", "Otávio", 1.8, 80);
console.log(pessoa.falar("JavaScript"));
console.log(pessoa.imc());
Neste exemplo, a função criarPessoa
aceita parâmetros para nome, sobrenome, altura e peso e retorna um objeto que representa uma pessoa. Este objeto tem propriedades (nome, sobrenome, altura e peso) e métodos (falar e imc) associados a ele. O método falar
retorna uma frase relacionada ao nome da pessoa e ao assunto fornecido, enquanto o método imc
calcula e retorna o índice de massa corporal.
Benefícios das Factory Functions
-
Encapsulamento: A criação de objetos é encapsulada na função, ocultando detalhes de implementação e proporcionando uma interface limpa para o uso.
-
Reutilização de código: Se várias instâncias do mesmo tipo de objeto precisarem ser criadas, a factory function permite reutilizar a lógica de criação.
-
Configurabilidade: A função pode aceitar parâmetros para configurar as propriedades iniciais do objeto, permitindo uma flexibilidade maior.
-
Padronização: Permite aplicar padrões específicos ou regras de negócios durante a criação de objetos.
-
Organização: Ajuda a manter o código organizado, concentrando a lógica de criação em um local específico.
-
Facilidade de manutenção: Facilita futuras atualizações e modificações na lógica de criação sem afetar o restante do código.