Nivel 2 · 25 min
Patrones Creacionales
Los patrones creacionales resuelven cómo instanciar objetos de forma flexible y desacoplada. En lugar de usar new directamente, delegan la creación a métodos fábrica, clases fábrica o constructores fluidos. Los cinco patrones GoF creacionales son: Singleton, Factory Method, Abstract Factory, Builder y Prototype.
Singleton y Factory Method
Singleton garantiza una sola instancia de una clase y proporciona un punto de acceso global. El riesgo es que introduce estado global, dificulta el testing y puede ser un antipatrón cuando se usa para evitar inyección de dependencias. Factory Method define una interfaz para crear objetos pero deja a las subclases decidir qué clase instanciar — el creador no sabe qué clase concreta va a crear.
Abstract Factory y Builder
Abstract Factory crea familias de objetos relacionados sin especificar sus clases concretas — útil para themes de UI o drivers de base de datos intercambiables. Builder separa la construcción de un objeto complejo de su representación — permite construir el mismo tipo de objeto con diferentes configuraciones usando una cadena de métodos fluidos. Java usa Builder para StringBuilder, Lombok genera @Builder automáticamente.
Prototype
Prototype crea nuevos objetos copiando un objeto existente (prototipo). Útil cuando la creación es costosa y preferís clonar. En Java implementás Cloneable y override clone(). El riesgo es la copia superficial vs profunda — si el objeto tiene referencias, clone() las comparte por defecto. Jackson ObjectMapper.copy() es un ejemplo de factory con semántica de prototype.
Code example
// Builder pattern
Order order = Order.builder()
.customerId("c-123")
.item("SKU-A", 2)
.priority(Priority.HIGH)
.build();
// Abstract Factory
UIFactory factory = new DarkThemeFactory();
Button btn = factory.createButton();
Dialog dlg = factory.createDialog();