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:
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