Patrones de Diseño en Programación Orientada a Objetos

¿Qué son los patrones de diseño?

Los patrones de diseño son soluciones reutilizables a problemas comunes en el desarrollo de software.

No son código exacto, sino modelos que puedes adaptar a tus necesidades.

Se dividen en tres categorías:
  • Creacionales — cómo crear objetos
  • Estructurales — cómo organizar clases
  • Comportamiento — cómo interactúan los objetos

Patrones Creacionales

Estos patrones ayudan a crear objetos de forma flexible.
  • Singleton — solo una instancia
  • Factory Method — crea objetos sin especificar la clase exacta
  • Builder — construye objetos paso a paso
# Ejemplo simple de Singleton en Python

class Config:
    _instancia = None

    def __new__(cls):
        if cls._instancia is None:
            cls._instancia = super().__new__(cls)
        return cls._instancia

c1 = Config()
c2 = Config()

print(c1 is c2)  # True

Patrones Estructurales

Estos patrones organizan clases y objetos para formar estructuras más grandes.
  • Adapter — adapta una interfaz a otra
  • Decorator — añade funcionalidades sin modificar la clase
  • Facade — simplifica sistemas complejos
# Ejemplo simple de Decorator

def mayusculas(func):
    def wrapper():
        return func().upper()
    return wrapper

@mayusculas
def saludar():
    return "hola"

print(saludar())  # HOLA

Patrones de Comportamiento

Estos patrones definen cómo interactúan los objetos.
  • Observer — notifica cambios a múltiples objetos
  • Strategy — intercambia algoritmos fácilmente
  • Command — encapsula acciones como objetos
# Ejemplo simple de Strategy

class EstrategiaA:
    def ejecutar(self):
        return "Estrategia A"

class EstrategiaB:
    def ejecutar(self):
        return "Estrategia B"

class Contexto:
    def __init__(self, estrategia):
        self.estrategia = estrategia

    def operar(self):
        return self.estrategia.ejecutar()

ctx = Contexto(EstrategiaA())
print(ctx.operar())  # Estrategia A
Inicio
Ir al blog de Daniel