Este patrón de deseño axudarache a crear obxectos de tipo similar ou clases, cando non sabes exactamente que tipo terás que ter ou o que vai usar.
Segundo vostede, creando o seu proxecto, decidirá que vai instanciar.
clase ou obxectos similares, vou darlle un exemplo:
// 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; }}
Como vemos, os obxectos declarados son obxectos similares, están relacionados e compartidos, neste caso o texto variable.
// 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') );
Isto chamará o método que decidimos sobre a nosa función e unha vez que se aprobará a condición, creará un Nova instancia de HeadingHTML, á súa vez o texto (benvido), obtendo como resultado un obxecto que contén un H1.
HeadingHTML {texto: "Bienvenidos", tipo: "h1"}
En resumo
A fábrica abre unha serie de posibilidades ao traballar con obxectos similares sen ter que duplicar o código, Só debes instalouno!