V računalniškem programiranju je tovarna objekt, ki se uporablja za ustvarjanje drugih objektov. Objekti se v tem primeru nanašajo na vrednosti, funkcije ali podatkovne strukture, uporabljene v kodi. Tovarniški vzorec je vzorec oblikovanja, ki se zanaša na tovarne za izdelavo predmetov in ne neposredno ustvarjanje predmetov. To omogoča enostavno spreminjanje kode in ohranjanje prilagodljivosti. Široko se uporablja v objektno usmerjenem računalniškem programiranju, ki uporablja predmete za gradnjo programov in aplikacij.
Tovarna ima metodo za vsako vrsto predmeta, ki ga lahko ustvari. Metoda je v bistvu vzorec. Sestavljen je iz niza navodil, znanih kot podprogram, ki prevzame parametre, ki jih običajno zagotovi uporabnik, in izpiše določen objekt. Večina tega se zgodi v zakulisju, ne da bi uporabnik ali stranka o tem vedela ničesar.
Pri uporabi tovarniškega vzorca program deluje s skupnim vmesnikom in ne neposredno komunicira z razredi. Razred se uporablja kot predloga za ustvarjanje predmetov. Vsak predmet določenega razreda ima enako vedenje in osnovne atribute. Razrede lahko nadalje razdelimo na podrazrede, od katerih vsak podeduje nekatere atribute razreda, ki mu pripada. Predmet določenega razreda je znan kot primerek tega razreda.
Če bi na primer uporabnik želel, da program ustvari kvadrat v programu ali operacijskem sistemu, ki uporablja tovarniški vzorec, bi program obvestil tovarno, da uporabnik potrebuje predmet, ki ima štiri stranice enake dolžine in štiri prave kote. Tovarna bi metodo oblikovanja obvestila, da je potrebna oblika. Lahko posreduje nekatere parametre kvadrata, na primer območje, ki bi ga uporabnik želel, da kvadrat pokrije.
Podrazredi bi odločali, kateri razred naj se uporabi. Primerek kvadrata razreda bi se vrnil v tovarno, ki bi ga posredovala programu, ki ga je prvi zahteval. Uporabnik bi videl samo, da so bili podatki poslani v tovarno in jih je tovarna vrnila. Notranjega delovanja tovarne ni mogoče videti.
Prednost uporabe tovarniškega vzorca je, da omogoča enostavno spreminjanje programa. Nove vrste je mogoče dodati tovarniškemu vzorcu preprosto s spreminjanjem majhnega koščka kode odjemalca, običajno največ ene vrstice. Drugi vzorci programiranja zahtevajo, da programer spremeni kodo na vsakem mestu, kjer je objekt ustvarjen.