Abstract factory
Abstract factory neboli továrna je návrhový vzor který řeší univerzálnost kódu. Cílem továrny je odstínit klienta od vytváření konkrétních objektů (to má na starost factory). Klient se nestará o to, které konkrétní objekty vyrábí která konkrétní továrna, protože používá jednotné rozhraní abstraktní továrny. Vzor tudíž odděluje detaily implementace skupiny objektů od jejich obecného používání.
Příklad Abstract factory:
Jde o to, aby například programátor při změně nějakého grafického prvku, nemusel překopávat celý kód který s tímto prvkem pracuje. Chceme-li mít například univerzální GUI jak pro Windows tak pro Linux, ale v programu nechceme rozlišovat zda pracujeme s linuxovským či windovským tlačítkem. Tuhle univerzalitu zajistím tak, že vytvořím univerzální tlačítko UButton (rozhraní, abstraktní třída), které bude mít definované metody pro práci s tlačítkem. V programu tedy budeme pracovat tlačítkem typu UButton a o konkrétní instanci se postará třída Factory (odtud název návrhového vzoru). Factory na základě operačního systému vytvoří instanci konkrétního tlačítka, které je specializované už pro daný operační systém WinButton nebo LinuxButton. Vzhledem k tomu, že obě tyto třídy implementovaly rozhraní UButton
class WinButton implements UButton
class LinuxButton implements UButton
pracuje s nimi hlavní program jako s jedním typem tlačítka UButton a jestli je to vevnitř WinButton nebo LinuxButton ho nezajímá.