În programarea computerelor, o fabrică este un obiect folosit pentru crearea altor obiecte. În acest caz, obiectele se referă la valori, funcții sau structuri de date utilizate în cod. Modelul de fabrică este un model de design care se bazează pe fabrici pentru a face obiecte, mai degrabă decât pentru a crea obiectele direct. Acest lucru permite ca codul să fie ușor modificat și să mențină flexibilitatea. Este utilizat pe scară largă în programarea computerizată orientată pe obiecte, care utilizează obiecte pentru a construi programe și aplicații.
O fabrică are o metodă pentru fiecare tip de obiect pe care îl poate crea. O metodă este în esență un model. Constă dintr-un set de instrucțiuni, cunoscut sub numele de subrutină, care preia parametrii furnizați de obicei de utilizator și scoate un anumit obiect. Cele mai multe dintre acestea se întâmplă în culise, fără ca utilizatorul sau clientul să știe nimic despre asta.
Când se utilizează modelul din fabrică, programul interacționează cu o interfață comună, mai degrabă decât să comunice direct cu clasele. O clasă este folosită ca șablon pentru a crea obiecte. Fiecare obiect dintr-o anumită clasă împărtășește același comportament și atribute de bază. Clasele pot fi împărțite în continuare în subclase, fiecare dintre ele moștenind unele dintre atributele clasei căreia îi aparține. Un obiect al unei anumite clase este cunoscut ca o instanță a acelei clase.
Dacă, de exemplu, utilizatorul dorea ca programul să creeze un pătrat într-un program sau sistem de operare care utilizează modelul din fabrică, programul ar anunța fabrica că utilizatorul are nevoie de un obiect care să aibă patru laturi de lungime egală și patru unghiuri drepte. Fabrica va notifica metoda formei că era nevoie de o formă. Ar putea transmite unii parametri ai pătratului, cum ar fi zona pe care utilizatorul ar dori să o acopere pătratul.
Subclasele ar decide ce clasă ar trebui utilizată. O instanță a pătratului de clasă va fi returnată fabricii, care o va transmite programului care a solicitat-o primul. Utilizatorul va vedea doar că informațiile au fost trimise fabricii și returnate de fabrică. Funcționarea interioară a fabricii nu poate fi văzută.
Avantajul utilizării unui model din fabrică este că permite schimbarea cu ușurință a programului. Noi tipuri pot fi adăugate la modelul din fabrică prin simpla modificare a unei mici părți din codul clientului, de obicei nu mai mult de o linie. Alte modele de programare impun programatorului să modifice codul în fiecare locație în care este creat un obiect.