Aquest patró de disseny et va a ajudar a crear objectes o classes de tipus similar, quan no saps ben bé de quin tipus seran finalment o quals vas a utilitzar.
Segons vagis creant el teu projecte decidiràs quals vas a instanciar.
Classes o objectes similars, et donaré un exemple: a
// Imaginemos que tenemos una pequeña app que crea Websfunction constructorSitios() { // creamos el método this.crearElemento = (texto, tipo) => { let html; if (tipo === 'input'){ html = new InputHTML(texto) } else if (tipo === 'img'){ html = new ImangenHTML(texto) } else if (tipo === 'h1'){ html = new HeadingHTML(texto) } else if (tipo === 'p'){ html = new ParrafoHTML(texto) } html.tipo = tipo; return html; }}
Com veiem, els objectes declarats són objectes similars, són relacionats i comparteixen mateixes propietats, en aquest cas la variable text.
// Ahora imaginemos que necesitamos crear un H1// Creamos el constructor HeadingHTMLconst HeadingHTML = function(texto){ this.texto = texto;};const sitioWeb = new constructorSitios();sitioWeb.crearElemento('Bienvenidos', 'h1') );
Això cridarà a l’mètode que declarem en la nostra funció i un cop passada la condició if, crearà una nova instància de HeadingHTML, al seu torn li passem el text (Benvinguts), obtenint com a resultat un objecte que conté un H1.
HeadingHTML {texto: "Bienvenidos", tipo: "h1"}
En resum
el factory obre un ventall de possibilitats a l’treballar amb objectes similars sense haver de duplicar codi, només hauràs instanciarlo!.