Patrones de Diseño – Singleton, Observer, Factory, Adapter, Iterator, Strategy, Decorator
Otros artículos sobre patrones de diseño:
- Fundamentos de Patrones de Diseño (GoF)
- Patrones Creacionales (Singleton, Factory, Builder, Prototype, Abstract Factory)
- Catálogo de Patrones de Diseño
Este artículo es una explicación de conceptos sobre patrones de diseño importantes, incluyendo preguntas de examen y etiquetas.
En pocas palabras
Los patrones de diseño son soluciones probadas para problemas recurrentes en el desarrollo de software. Proporcionan plantillas estandarizadas para situaciones comunes y mejoran la calidad del código, mantenibilidad y comunicación entre desarrolladores.
Descripción técnica compacta
Los patrones de diseño fueron popularizados por la “Gang of Four” (GoF) y describen estrategias de solución contrastadas para problemas típicos en programación orientada a objetos. Se categorizan en patrones creacionales (patrones de creación como Singleton, Factory), patrones estructurales (patrones de estructura como Adapter, Decorator) y patrones de comportamiento (patrones de comportamiento como Observer, Strategy, Iterator). Los patrones promueven acoplamiento débil, alta cohesión y reutilización. No son algoritmos listos para usar, sino descripciones abstractas de soluciones que deben adaptarse a contextos específicos.
Puntos clave para exámenes
- Patrones creacionales: Singleton, Factory, Abstract Factory, Builder
- Patrones estructurales: Adapter, Decorator, Facade, Proxy, Composite
- Patrones de comportamiento: Observer, Strategy, Iterator, Command, Template Method
- Singleton: instancia global, implementación thread-safe
- Observer: publisher-subscriber, acoplamiento débil entre objetos
- Factory: creación de objetos sin conocer clases concretas
- Adapter: adaptación de interfaces entre clases incompatibles
- Iterator: acceso secuencial a elementos de colecciones sin exponer la estructura interna
- Strategy: algoritmos intercambiables mediante implementación basada en interfaces
Componentes principales
- Patrón Singleton (instancia global)
- Patrón Factory (creación de objetos)
- Patrón Observer (patrón observador)
- Patrón Adapter (adaptación de interfaces)
- Patrón Iterator (acceso secuencial)
- Patrón Strategy (intercambio de algoritmos)
- Patrón Decorator (extensión dinámica)
- Patrón Template Method (esqueleto de algoritmo)
- Patrón MVC (patrón arquitectónico)
- Patrón Registry (registro centralizado)
Ejemplo práctico
// Ejemplo de patrón Singleton
public class DatabaseConnection {
private static DatabaseConnection instance;
private DatabaseConnection() {
// Constructor privado
}
public static synchronized DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
}
return instance;
}
}
// Ejemplo de patrón Observer
interface Observer {
void update(String message);
}
class EmailNotification implements Observer {
public void update(String message) {
sendEmail(message);
}
}
Explicación: Singleton asegura una instancia global, Observer permite notificaciones cuando cambia el estado.
Ventajas y desventajas
Ventajas
- Soluciones comprobadas para problemas conocidos
- Mejor comunicación entre desarrolladores
- Promueven acoplamiento débil y alta cohesión
- Aumentan reutilización y mantenibilidad
Desventajas
- Pueden introducir complejidad innecesaria
- Curva de aprendizaje para principiantes
- A veces son over-engineering para problemas simples
- Requieren adaptación apropiada al contexto
Preguntas típicas de examen (con respuesta breve)
-
¿Dos categorías principales de patrones de diseño? Creacionales (creación), estructurales (estructura), comportamiento.
-
¿Propósito del patrón Singleton? Garantizar que una clase tenga exactamente una instancia y que sea accesible globalmente.
-
¿Cuándo aplicar el patrón Observer? Cuando varios objetos necesitan ser informados sobre cambios de estado de otro objeto.
-
¿Qué problema resuelve el patrón Factory? Creación de objetos sin necesidad de conocer las clases concretas en el código cliente.
-
¿Diferencia entre Adapter y Decorator? Adapter adapta interfaces, Decorator añade funcionalidad de forma dinámica.
-
¿Ventaja del patrón Iterator? Permite acceso uniforme a diferentes tipos de colecciones sin exponer la estructura interna.
-
¿Cuándo usar el patrón Strategy? Cuando los algoritmos deben ser intercambiables sin modificar el código cliente.
-
¿Componentes del patrón MVC? Model (datos), View (presentación), Controller (lógica para conectar Model y View).
Fuentes más importantes
- https://refactoring.guru/design-patterns
- https://de.wikipedia.org/wiki/Entwurfsmuster
- https://www.oracle.com/technical-resources/articles/j2ee/patterns
Lecturas recomendadas: Patrones de Diseño
Keine Bücher für Kategorie "design-patterns" gefunden.



