Treci la conținutul principal

Ce este

Șablonul Metoda fabrică (Factory Method) ascunde crearea unui obiect în spatele unei funcții. Apelantul spune ce vrea — fabrica decide ce clasă concretă să construiască și o returnează.

Apelantul nu atinge niciodată clasele concrete, așa că se pot adăuga tipuri noi fără a schimba codul care apelează. În Python, aceasta este pur și simplu o funcție new_something() al cărei tip returnat este un protocol.


Exemplu: o fabrică de stocare

new_storage("disk") și new_storage("memory") returnează clase concrete diferite în spatele aceluiași protocol Storage — apelantul nu poate face diferența și nici nu are nevoie.

Fabrica alege clasa

Instrucțiunea match după tipuri se află într-un singur loc — fabrica. Restul programului cunoaște doar protocolul.

Prompt
Scrie un program Python cu un protocol Storage (metoda save), clasele DiskStore și MemoryStore și o funcție fabrică new_storage care returnează clasa potrivită pentru un șir care indică tipul. Creează ambele tipuri prin fabrică și salvează o comandă cu fiecare, afișând rezultatele.
Ieșire: program Python complet

Când să-l folosești

Folosește-l când clasa concretă depinde de ceva cunoscut doar în timpul rulării — o valoare de configurare, o alegere a utilizatorului, un mediu — sau când vrei ca logica de creare să fie într-un singur loc.

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


Avantaje și dezavantaje

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

Dezavantaje: încă un nivel prin care trebuie să citești; cu o singură implementare este doar o formalitate.