Skip to content
IRC-CodingIRC-Coding
Design PatternsSingletonObserverFactoryAdapterIteratorStrategyDecoratorTemplate MethodMVCAlgoritmosFundamentos

Design Patterns: Singleton, Observer, Factory y más

Patrones de diseño probados para problemas recurrentes. Singleton, Observer, Factory, Adapter, Iterator, Strategy, Decorator y MVC.

S

schutzgeist

3 min read
Design Patterns: Singleton, Observer, Factory y más

Patrones de Diseño – Singleton, Observer, Factory, Adapter, Iterator, Strategy, Decorator

Otros artículos sobre 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

  1. Patrón Singleton (instancia global)
  2. Patrón Factory (creación de objetos)
  3. Patrón Observer (patrón observador)
  4. Patrón Adapter (adaptación de interfaces)
  5. Patrón Iterator (acceso secuencial)
  6. Patrón Strategy (intercambio de algoritmos)
  7. Patrón Decorator (extensión dinámica)
  8. Patrón Template Method (esqueleto de algoritmo)
  9. Patrón MVC (patrón arquitectónico)
  10. 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)

  1. ¿Dos categorías principales de patrones de diseño? Creacionales (creación), estructurales (estructura), comportamiento.

  2. ¿Propósito del patrón Singleton? Garantizar que una clase tenga exactamente una instancia y que sea accesible globalmente.

  3. ¿Cuándo aplicar el patrón Observer? Cuando varios objetos necesitan ser informados sobre cambios de estado de otro objeto.

  4. ¿Qué problema resuelve el patrón Factory? Creación de objetos sin necesidad de conocer las clases concretas en el código cliente.

  5. ¿Diferencia entre Adapter y Decorator? Adapter adapta interfaces, Decorator añade funcionalidad de forma dinámica.

  6. ¿Ventaja del patrón Iterator? Permite acceso uniforme a diferentes tipos de colecciones sin exponer la estructura interna.

  7. ¿Cuándo usar el patrón Strategy? Cuando los algoritmos deben ser intercambiables sin modificar el código cliente.

  8. ¿Componentes del patrón MVC? Model (datos), View (presentación), Controller (lógica para conectar Model y View).

Fuentes más importantes

  1. https://refactoring.guru/design-patterns
  2. https://de.wikipedia.org/wiki/Entwurfsmuster
  3. https://www.oracle.com/technical-resources/articles/j2ee/patterns

Lecturas recomendadas: Patrones de Diseño

Keine Bücher für Kategorie "design-patterns" gefunden.

Volver al blog
Share:

Nächster Artikel in Arquitectura de Software

Weiterlesen
Design Patterns vs Arquitectura: Diferencias

Entradas relacionadas