Conception et analyse techniques
Mise en œuvre de la loi sur le démètre pour réduire la dépendance des objets dans le design orienté objet
Table of Contents
La loi de Demeter est une ligne directrice pour le développement de logiciels, en particulier dans la programmation orientée objet. Elle vise à réduire les dépendances entre les objets, rendant les systèmes plus modulaires, plus faciles à entretenir et moins sujets aux bogues.
Comprendre la loi du Démètre
La Loi de Demeter, souvent résumée comme «parler seulement à vos amis immédiats», encourage les objets à communiquer uniquement avec leurs collaborateurs directs. Cela signifie qu'un objet ne devrait invoquer que des méthodes de :
- C'est moi.
- Objets passés comme paramètres
- Objets qu'il crée
- Ses objets composants directs
En adhérant à cette règle, les dépendances de l'objet sont minimisées, réduisant le risque de couplage serré et rendant le code plus facile à changer ou à étendre.
Mise en œuvre de la loi sur le démètre
La mise en œuvre de la loi de Demeter implique la conception de classes et de méthodes qui ne se retrouvent pas profondément dans les graphiques d'objets.
order.getCustomer().getAddress().getCity()
Il est préférable de fournir une méthode qui renvoie directement les informations nécessaires:
order.getCustomerCity()
Conseils de refactoration
- Encapsuler des chaînes complexes dans la classe elle-même.
- Créer des méthodes qui ne présentent que les données nécessaires.
- Utilisez des modèles de conception comme Facade ou Mediator pour réduire les dépendances.
- Gardez les cours centrés sur une seule responsabilité.
Avantages de suivre la loi de Demeter
L'adhésion à cette loi offre plusieurs avantages :
- Réduit le couplage entre les classes.
- Améliore la lisibilité et la maintenance du code.
- Rendre les essais unitaires plus faciles en isolant les objets.
- Faciliter la refacturation et l'extension du code.
En résumé, la mise en œuvre de la loi de Demeter dans la conception orientée objet favorise un code plus propre et plus modulaire. Il encourage les développeurs à réfléchir soigneusement aux interactions et aux dépendances des objets, ce qui conduit à des systèmes logiciels plus robustes.