Las funciones de fábrica son funciones para crear objetos de forma estandarizada. Se utilizan en JavaScript para manipular objetos y datos.
En este artículo, veremos cómo usar las funciones de fábrica para crear programas inteligentes y funcionales.
¿QUÉ ES UNA FUNCIÓN DE FÁBRICA?
Una función de fábrica es simplemente una función que devuelve un objeto. Entonces podemos usar este objeto en nuestro código.
El punto es estandarizar y automatizar la creación de objetos. Tomemos un ejemplo, una aplicación que necesita administrar habitaciones de hotel.
Para almacenar estos datos, utilizaremos objetos. El método clásico sería hacer algo como esto:
1
2
3
4
5
6
7
8
9
10
11
|
const chambre1 = { nom : 'Suite royale' , prix : 1000, taille : 100 }; const chambre2 = { nom : 'Chambre économique' , prix : 70, taille : 20 } |
El problema es que tenemos que crear nuestros objetos a mano. Es largo y totalmente manual. No puede crear dinámicamente una nueva habitación de hotel sin escribirla en código.
Aquí es donde entran las funciones de fábrica:
1
2
3
4
5
6
7
8
9
10
|
function creerHotel(nom, prix, taille){ return { nom : nom, prix : prix, taille : taille, } } const chambre1 = creerHotel( 'Suite Royale' , 1000,100); const chambre2 = creerHotel( 'Chambre économique' , 70,20); |
Aquí, puedo crear tantas habitaciones de hotel como quiera con una sola línea de código, ¿no es eso mejor? Aquí estoy pasando argumentos a mi función y asignándolos como valor, lo que me permite crear objetos con los valores que quiera.
Veamos los objetos de nuestra habitación con un archivo console.log():
1
2
|
{ nom: 'Suite Royale', prix: 1000, taille: 100 } { nom: 'Chambre économique', prix: 70, taille: 20 } |
Como puede ver, tenemos objetos. Nuestra función de fábrica funciona perfectamente.
INTEGRANDO MÉTODOS EN NUESTRAS FUNCIONES DE FÁBRICA
Por supuesto, podemos ir un poco más allá. Intentemos integrar métodos en estos objetos.
Un método es una función integrada en un objeto que permite modificar atributos internos y realizar acciones externas.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function creerHotel(nom, prix, taille){ return { nom : nom, prix : prix, taille : taille, changerNom : function (nom){ this .nom = nom }, presenterHotel : function (){ console.log(`Cette chambre se nomme ${ this .nom} elle coûte ${ this .prix} et elle fait ${ this .taille}`) } } } |
Aquí usamos la palabra clave this para acceder a los atributos internos de nuestro objeto. Concretamente, this.name accederá al valor de la variable nombre.
Intentemos manipular un poco nuestros objetos. Crearé una habitación, modificaré su nombre y usaré el método presenterHotel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
|
function creerHotel(nom, prix, taille){ return { nom : nom, prix : prix, taille : taille, changerNom : function (nom){ this .nom = nom }, presenterHotel : function (){ console.log(`Cette chambre se nomme ${ this .nom} elle coûte ${ this .prix} et elle fait ${ this .taille}`) } } } const chambre1 = creerHotel( 'Suite Royale' , 1000,100); chambre1.changerNom( 'Une modification' ); chambre1.presenterHotel(); |
Aquí todo funciona. Nuestro objeto ha sido modificado y vemos esta modificación en nuestro método presenterHotel():
1
|
Cette chambre se nomme Une modification elle coûte 1000 et elle fait 100 |
Ahora podemos modificar dinámicamente nuestros objetos. Puedes ir tan lejos como quieras.
Es posible pasar otro objeto en nuestros métodos. Incluso es posible modificar este objeto secundario. Los invito a probar para comprender mejor cómo funcionan las funciones de fábrica.
EN CONCLUSIÓN
Las funciones de fábrica son herramientas extremadamente importantes. Nos permiten crear objetos inteligentes con funciones y atributos dinámicos.
Si quieres progresar en JavaScript, te recomiendo que domines las funciones de fábrica. Están sumamente presentes en el paradigma de la programación funcional , un sistema muy utilizado por los desarrolladores de JavaScript.
Si te ha gustado este artículo, no dudes en descargar mi libro en PDF que te enseñará cómo empezar a programar bien.
FAQ’s
1. ¿Qué son las funciones de fábrica en JavaScript?
Las funciones de fábrica son funciones que devuelven objetos. En lugar de usar clases o constructores, las funciones de fábrica permiten crear y devolver nuevos objetos directamente. Este enfoque es útil para crear múltiples instancias de objetos con propiedades y métodos comunes.
2. ¿Cuál es la diferencia entre una función de fábrica y un constructor en JavaScript?
Un constructor en JavaScript es una función que se invoca con la palabra clave new para crear una nueva instancia de un objeto, mientras que una función de fábrica es una simple función que devuelve un objeto sin necesidad de utilizar new. La función de fábrica tiene un enfoque más flexible y no depende de la palabra clave this, lo que simplifica la creación de objetos.
3. ¿Por qué debería usar una función de fábrica en lugar de una clase?
Las funciones de fábrica son útiles si prefieres un enfoque más funcional, o si tu aplicación no requiere la complejidad adicional de las clases y la herencia de prototipos. Además, las funciones de fábrica permiten una mayor personalización y encapsulación sin depender de la palabra clave this.
4. ¿Las funciones de fábrica son más eficientes que las clases?
Depende del caso de uso. Las funciones de fábrica pueden ser más simples y eficientes para aplicaciones pequeñas o específicas. Sin embargo, para sistemas más grandes y aplicaciones que requieren herencia y patrones de diseño orientados a objetos, las clases pueden ser más adecuadas.