Sobes.tech
Middle

¿Qué son los patrones de diseño?

sobes.tech AI

Respuesta de la IA

Los patrones de diseño son soluciones típicas y comprobadas repetidamente para problemas comunes de diseño en programación orientada a objetos. No son bibliotecas o frameworks listos para usar, sino conceptos o "recetas" que se pueden adaptar a tareas específicas.

Los patrones se centran en las relaciones entre clases y objetos. Se dividen en tres categorías principales:

  • Creacionales: Patrones para crear objetos.
    • Método de fábrica (Factory Method)
    • Fábrica abstracta (Abstract Factory)
    • Singleton
    • Constructor (Builder)
    • Prototipo (Prototype)
  • Estructurales: Patrones para organizar clases y objetos en estructuras más grandes.
    • Adaptador (Adapter)
    • Puente (Bridge)
    • Compuesto (Composite)
    • Decorador (Decorator)
    • Fachada (Facade)
    • Peso ligero (Flyweight)
    • Proxy
  • Comportamentales: Patrones para algoritmos y formas de interacción entre clases y objetos.
    • Cadena de responsabilidad (Chain of Responsibility)
    • Comando (Command)
    • Iterador (Iterator)
    • Mediador (Mediator)
    • Memento
    • Observador (Observer)
    • Estado (State)
    • Estrategia (Strategy)
    • Método plantilla (Template Method)
    • Visitante (Visitor)

El uso de patrones de diseño permite crear código más flexible, escalable y mantenible, mejorando su legibilidad y facilitando el trabajo en equipo.

Por ejemplo, el patrón Singleton garantiza que una clase tenga solo una instancia y proporciona un punto de acceso global a ella.

// Ejemplo de Singleton en Java
class Singleton {
    private static Singleton instance; // Única instancia

    private Singleton() {
        // Constructor privado para evitar crear nuevas instancias
    }

    public static Singleton getInstance() {
        if (instance == null) { // Crear instancia en la primera llamada
            instance = new Singleton();
        }
        return instance; // Devolver la única instancia
    }

    public void showMessage() {
        System.out.println("¡Hola desde Singleton!");
    }
}