Middle+
¿Qué son los patrones de diseño estructurales?
sobes.tech AI
Respuesta de la IA
Los patrones estructurales de diseño describen cómo las clases y objetos pueden combinarse para construir estructuras más grandes. Ayudan a organizar la interacción entre objetos, haciendo que el sistema sea más flexible y fácil de mantener.
Algunos patrones estructurales comunes:
- Adaptador (Adapter): Permite que clases con interfaces incompatibles trabajen juntas.
- Puente (Bridge): Separa la abstracción de su implementación, permitiendo que ambas cambien de manera independiente.
- Compuesto (Composite): Permite tratar un grupo de objetos como si fuera un solo objeto.
- Decorador (Decorator): Añade dinámicamente nuevo comportamiento a los objetos sin modificar su código.
- Fachada (Facade): Proporciona una interfaz unificada a un conjunto de interfaces en un subsistema.
- Flyweight (Flyweight): Ahorra memoria compartiendo estado común entre muchos objetos pequeños.
- Proxy (Proxy): Proporciona un sustituto para otro objeto para controlar el acceso a él.
Ejemplo de uso del patrón Decorador:
# Componente base
class Coffee:
def cost(self):
return 5
def description(self):
return "Café normal"
# Decorador base
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Decorador concreto
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", con leche"
# Uso
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Café normal - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Café normal, con leche - 7
Estos patrones proporcionan flexibilidad mediante el uso de composición de objetos en lugar de herencia, lo que permite realizar cambios en el sistema sin modificar el código existente.