Por ejemplo: las bibliotecas para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto.
Así pues, el usuario declara un Botón, pero de forma más interna lo que está creando es un BotónWindows o un BotónLinux, por ejemplo.
El patrón Abstract Factory está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes, puesto que afectaría a todas las familias creadas.
La estructura típica del patrón Abstract Factory es la siguiente: Veremos un ejemplo didáctico y basado en el libro Head First Design Patterns, de O'Reilly.
Efectivamente, en este ejemplo cliente es Pizza y es independiente de la Factoría usada.