La conception actuelle estViolation de Liskov principe de substitution dans SharedFolder
SharedFolder
est une sous-classe deFolder
.SharedFile
est une sous-classe deFile
avec une URL de ressource distante.Folder
accepte la méthodeadd
.SharedFolder
accepte seulementSharedFile
mais pas non partagéFile
File
peut être déplacé vers un autreFolder
avecadd
.- L'interface utilisateur pour la recherche de fichiers dans
SharedFolder
etFolder
est la plupart du temps identique.
Le add
dans SharedFile
enfreint LSP. Comment réorganiser la structure de l'objet tout en permettant une réutilisation du code de l'interface utilisateur?
Vous pouvez définir la méthode add de ne pas garantir contractuellement que l'ajout est possible dans tous les cas. De cette façon, il n'y a pas d'échec de substitution. – usr
@usr, dites-vous que la documentation seule peut satisfaire LSP? Dans ce cas, même la méthode notoire [Iterator.remove()] (https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#remove--) satisfait LSP. – jaco0646
La saisie statique est juste un moyen d'ajouter * une * documentation * d'une manière lisible par une machine. Un contrat d'interface est arbitraire. C'est ce que vous définissez. Ne vous accrochez pas à des problèmes de syntaxe ou de langage. – usr