Abstract Factory

Crea objetos de diferentes familias de clases. Es un Factory para crear Factories.

En el ejemplo se necesita crear objetos gráficos como: Button, Panel, Windows, TextField, entre otros. Debido a que se desea que la aplicación sea multiplataforma, se crean Factories para crear los objetos gráficos dependiendo de la plataforma (Windows, Linux).

abstractfactory

Ejemplo de uso:

GuiFactory guiFactory = GuiFactorySelector.getFactory(OS.LINUX);

Button button = guiFactory.createButton(); // Botón que funcionará solo en linux
button.paint(); // Salida: Linux Button

Panel panel = guiFactory.createPanel(); // Panel que funcionará solo en linux
panel.paint(); // Salida: Linux Panel

Este patrón puede ser usado cuando una solución debe funcionar con diferentes variantes de una familia de objetos. Abstrae al desarrollador de la creación de los objetos, y solo tiene la responsabilidad de crear objetos asociados entre sí.

Código