JS-0802 - JavaScript Completo ES6 - Factory Function

JS-0802 - JavaScript Completo ES6 - Factory Function
Publicado em 21/05/2021 21h44
Visualizações: 2458

Funções criadoras de objetos

Factory Function é a implementação em JS de um dos padrões de projetos criacionais, o Factory Method, existente como em outras linguagens orientadas a objetos.

Este padrão encapsula a criação de objetos a partir de um de seus métodos, funcionando como uma fábrica de objetos propriamente dita. As funções retornam um objeto sem a necessidade da utilização da palavra-chave new. Além disso, os métodos são criados no próprio objeto, não no prototype, o que oferece uma melhoria de performance em casos de instanciação de um elevado número de objetos em uma mesma factory function.

Possuem basicamente a mesma função que as constructor functions e as classes. O retorno da função é puramente um objeto.

Por convenção, o nome de uma factory function começa com letra minúscula. Exemplo de uma função criadora de parágrafos:

JS-0802 - JavaScript Completo ES6 - Factory Function

O objeto tendo como propriedade o mesmo nome do valor, a partir do ES6 dispensa a declaração explícita (element: 'element', text: 'text').

Uma das vantagens da utilização factory é o isolamento de métodos e propriedades, tornando-os efetivamente privados. No exemplo acima as propriedades color e background não estão no retorno, portanto, inacessíveis, já a propriedade text está no retorno:

JS-0802 - JavaScript Completo ES6 - Factory Function

Para impedir que métodos e propriedades sejam modificados há o padrão Ice Factory, utilizando Object.freeze() no retorno. Ex:

JS-0802 - JavaScript Completo ES6 - Factory Function

Além de dispensar a utilização da palavra-chave new para a inicialização, factory function pode ser utilizada com uma constructor function.

No exemplo a seguir, utilizando os mesmos objetos, a função retornando o objeto instanciado em cada método interno permite o encadeamento de métodos sobre o objeto.

JS-0802 - JavaScript Completo ES6 - Factory Function

Veja também:

Confira mais artigos relacionados

Este website utiliza cookies próprios e de terceiros a fim de personalizar o conteúdo, melhorar a experiência do usuário, fornecer funções de mídias sociais e analisar o tráfego. Para continuar navegando você deve concordar com nossa Política de Privacidade

Sim, eu aceito. Não, eu não aceito.