Arvutiprogrammeerimises on tehas objekt, mida kasutatakse teiste objektide loomiseks. Objektid viitavad antud juhul koodis kasutatavatele väärtustele, funktsioonidele või andmestruktuuridele. Tehase muster on disainimuster, mis tugineb tehastele objektide valmistamisel, mitte objektide otse loomisel. See võimaldab koodi hõlpsalt muuta ja paindlikkust säilitada. Seda kasutatakse laialdaselt objektorienteeritud arvutiprogrammeerimises, mis kasutab objekte programmide ja rakenduste koostamiseks.
Tehasel on igat tüüpi objektide jaoks meetod, mida ta saab luua. Meetod on sisuliselt muster. See koosneb käskude komplektist, mida nimetatakse alamprogrammiks, mis võtab vastu tavaliselt kasutaja pakutavad parameetrid ja väljastab konkreetse objekti. Suurem osa sellest toimub kulisside taga, ilma et kasutaja või klient sellest midagi teaks.
Tehase mustri kasutamisel suhtleb programm pigem ühise liidesega, mitte ei suhtle otse klassidega. Klassi kasutatakse objektide loomise mallina. Igal konkreetse klassi objektil on sama käitumine ja põhiatribuudid. Klassid saab jaotada veel alamklassideks, millest igaüks pärib mõne selle klassi atribuudi, kuhu ta kuulub. Konkreetse klassi objekti nimetatakse selle klassi eksemplariks.
Kui kasutaja näiteks soovib, et programm looks tehasemustrit kasutavas programmis või operatsioonisüsteemis ruudu, teavitaks programm tehast, et kasutaja vajab objekti, millel on neli võrdse pikkusega külge ja neli täisnurka. Tehas teavitab kuju meetodit, et kuju on vaja. See võib edastada mõned ruudu parameetrid, näiteks ala, mida kasutaja soovib, et ruut kataks.
Alamklassid otsustavad, millist klassi tuleks kasutada. Klassiruudu eksemplar tagastatakse tehasele, mis annaks selle edasi programmile, kes seda esimesena taotles. Kasutaja näeb ainult seda teavet, mis tehasesse saadeti ja tehase poolt tagastati. Tehase sisetööd pole näha.
Tehase mustri kasutamise eeliseks on see, et see võimaldab programmi lihtsalt muuta. Tehase mustrile saab lisada uusi tüüpe, muutes lihtsalt pisikest kliendikoodi tükki, tavaliselt mitte rohkem kui ühte rida. Muud programmeerimismustrid nõuavad, et programmeerija muudaks koodi igas kohas, kus objekt luuakse.