Supposons que je travaille sur un système existant, assez grand. J'ai un objet, myObjectde classe MyClass(par exemple, supposons que je travaille en Java). myObjectest une composition contenant Collection, disons, un Listet d'autres objets qui (je pense) ne sont pas pertinents. Il contient des méthodes déléguées qui servent simplement à faire appel aux méthodes de celui- Listci, afin de s'assurer Listqu'il ne soit pas exposé (désolé si j'ai une mauvaise terminologie).
Disons que Listc'est un List<String>mais, pour une raison quelconque, la méthode d'accès principale est une méthode de masque pour la classe SomeOtherClass. Si je voulais insérer une nouvelle paire de valeurs dans mon List, alors j'aurais un objet SomeOtherClassappelé someObject. J'appellerais myObject.insert(someObject)et à l'intérieur de la insertméthode, il y aurait de la magie qui récupérerait un Stringpour le mettre dans le List<String>.
Supposons maintenant que je n'ai qu'une Stringvaleur et aucun SomeOtherClassobjet à insérer. En supposant que je ne peux pas modifier la insertméthode car cela casserait tout dans ce système. Dois-je alors surcharger la insertméthode? Ou dois-je créer un nouvel objet à SomeOtherClasschaque fois que je veux appeler insert?
Je suppose que si je le surchargeais, ça ressemblerait à quelque chose comme ça ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Cet exemple est un puzzle artificiel basé sur une situation similaire (légèrement plus complexe) concernant la surcharge que j'ai rencontrée hier. Je vais l'étendre s'il y a quelque chose qui n'était pas clair)
Serait-ce un endroit approprié pour surcharger une méthode? Sinon, quand devrais-je surcharger une méthode?
magicStringMethod()dans mon exemple, obtiendrait, dans mon cas, une Stringreprésentation de SomeOtherObjectce qui était un objet de domaine.