Treci la conținutul principal

Ce este

Șablonul Factory Method pune crearea unui obiect în spatele unei funcții. Apelantul spune ce dorește — fabrica decide ce clasă concretă să construiască și o returnează ca interfață.

Apelantul nu atinge niciodată clasele concrete, așa că se pot adăuga tipuri noi fără a schimba vreun cod apelant. În TypeScript aceasta este pur și simplu o funcție createSomething() al cărei tip de return este interfața.


Exemplu: o fabrică de stocare

createStorage("disk") și createStorage("memory") returnează clase concrete diferite în spatele aceleiași interfețe OrderStorage — apelantul nu poate face diferența și nici nu are nevoie.

Fabrica alege clasa

Instrucțiunea switch pe tipuri se află într-un singur loc — fabrica. Restul programului cunoaște doar interfața, așa că bucla apelează store.save() fără să întrebe vreodată ce a primit.

Prompt
Scrie un program TypeScript cu o interfață OrderStorage (o metodă save care returnează un string), clasele DiskStore și MemoryStore care o implementează și o funcție-fabrică createStorage care o returnează pe cea potrivită pentru un string de tip kind. Parcurge cele două tipuri, construiește-le pe fiecare prin fabrică și afișează rezultatul salvării unei comenzi.
Ieșire: program TypeScript și rezultatul capturat

Când să îl folosești

Folosește-l când clasa concretă depinde de ceva cunoscut doar la rulare — o valoare din configurație, o alegere a utilizatorului, un mediu de execuție — sau când vrei logica de creare exact într-un singur loc.

Renunță la el când există o singură implementare și niciun semn al unei a doua. const store = new DiskStore() nu are nevoie de fabrică.


Avantaje și dezavantaje

Avantaje: logica de creare într-un singur loc; apelanții depind doar de interfață; adăugarea unui tip nou atinge doar fabrica.

Dezavantaje: încă un nivel de parcurs la citire; cu o singură implementare este pur ceremonial.