Middle+
Qu'est-ce que les patrons de conception structurels?
sobes.tech IA
Réponse de l'IA
Les patrons de conception structurels décrivent comment les classes et les objets peuvent être combinés pour construire des structures plus grandes. Ils aident à organiser l'interaction entre les objets, rendant le système plus flexible et plus facile à maintenir.
Certains patrons structurels courants :
- Adaptateur (Adapter) : Permet à des classes avec des interfaces incompatibles de travailler ensemble.
- Pont (Bridge) : Sépare l'abstraction de sa mise en œuvre, permettant à l'une et l'autre de changer indépendamment.
- Composite (Composite) : Permet de traiter un groupe d'objets comme un seul objet.
- Décorateur (Decorator) : Ajoute dynamiquement un comportement supplémentaire aux objets sans modifier leur code.
- Facade (Facade) : Fournit une interface unifiée à un ensemble d'interfaces dans un sous-système.
- Flyweight (Flyweight) : Économise de la mémoire en partageant l'état commun entre de nombreux petits objets.
- Proxy (Proxy) : Fournit un substitut pour un autre objet afin de contrôler l'accès à celui-ci.
Exemple d'utilisation du patron Décorateur :
# Composant de base
class Coffee:
def cost(self):
return 5
def description(self):
return "Café ordinaire"
# Décorateur de base
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Décorateur concret
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", avec du lait"
# Utilisation
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Café ordinaire - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Café ordinaire, avec du lait - 7
Ces patrons offrent une flexibilité grâce à l'utilisation de la composition d'objets plutôt que de l'héritage, ce qui permet de modifier le système sans changer le code existant.