Middle+
O que são padrões de projeto estruturais?
sobes.tech IA
Resposta da IA
Os padrões de design estruturais descrevem como classes e objetos podem ser combinados para construir estruturas maiores. Eles ajudam a organizar a interação entre objetos, tornando o sistema mais flexível e fácil de manter.
Alguns padrões estruturais comuns:
- Adaptador (Adapter): Permite que classes com interfaces incompatíveis trabalhem juntas.
- Ponte (Bridge): Separa a abstração da sua implementação, permitindo que ambas mudem de forma independente.
- Composto (Composite): Permite tratar um grupo de objetos como se fosse um único objeto.
- Decorador (Decorator): Adiciona dinamicamente novo comportamento aos objetos sem modificar seu código.
- Fachada (Facade): Fornece uma interface unificada a um conjunto de interfaces em um subsistema.
- Flyweight (Flyweight): Economiza memória compartilhando estado comum entre muitos objetos pequenos.
- Proxy (Proxy): Fornece um substituto para outro objeto para controlar o acesso a ele.
Exemplo de uso do padrão Decorador:
# Componente base
class Coffee:
def cost(self):
return 5
def description(self):
return "Café comum"
# 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() + ", com leite"
# Uso
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Café comum - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Café comum, com leite - 7
Estes padrões proporcionam flexibilidade ao usar composição de objetos em vez de herança, permitindo fazer alterações no sistema sem modificar o código existente.