![]() | Par Jules Le 25 March 2020 | ![]() |
Après avoir vu le principe très académique de la substitution de Liskov dans le dernier article, passons désormais au plus empirique principe de séparation des interfaces, autrement nommé ISP, le I de notre SOLID.
L’ISP est une solution au problème des interfaces polluées, lui-même dû aux interfaces trop lourdes. Robert C. Martin explique le principe de séparation des interfaces de la manière suivante.
Les clients ne devraient pas dépendre d’interfaces qu’ils n’utilisent pas.
Comprenez par là qu’une classe (un client) devrait pleinement tirer parti de l’interface ou des interfaces qu’elle implémente, sinon, on peut la ou les diviser en interfaces plus petites.
Vous allez voir ici exactement ce qu’il ne faut pas faire.
L’interface Programmeur définit plein de fonctions qui peuvent être utiles à certains programmeurs, mais pas tous. En effet, les fonctions testerLogiciel, corrigerBugs et optimiser sont inutiles à la classe ProgrammeurDebutant, mais elle doit l’implémenter pour compiler. On ne peut pas non plus supprimer ces fonctions de l’interface puisqu’elles sont utilisées par ProgrammeurExpert. La solution ? Diviser l’interface Programmeur, trop lourde.
Voici qui est mieux. Dans le code ci-dessus, nous avons séparé les fonctions destinées aux programmeurs débutants de celles destinées aux programmeurs experts en les plaçant dans des interfaces différentes. De cette manière, on permet à ProgrammeurDebutant de n’implémenter que ecrireCode et delivrerLogiciel en implémentant ProgrammeurBase. La classe ProgrammeurExpert peut toujours implémenter toutes ses fonctions car elle implémente à la fois les interfaces ProgrammeurBase et ProgrammeurAvance.
Quand vous implémentez une interface mais n’en utilisez pas toutes les fonctions, séparez-la en plusieurs interfaces et n’implémentez que ce qui est nécessaire dans les classes.
Et surtout, ne manquez pas le prochain et dernier article de la série sur l'inversion de dépendance
Sources
Top de la semaine
Au hasard
Suivez-nous !
Articles récents
Commentaires
Suivez-nous !
Contactez-nous : contact@shadow-tech.fr
Partenariats : partnership@shadow-tech.fr
© Jules Rommens, tous droits réservés. Consulter les mentions légales.