Supposons que je travaille sur un système existant, assez grand. J'ai un objet, myObject
de classe MyClass
(par exemple, supposons que je travaille en Java). myObject
est une composition contenant Collection
, disons, un List
et 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- List
ci, afin de s'assurer List
qu'il ne soit pas exposé (désolé si j'ai une mauvaise terminologie).
Disons que List
c'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 SomeOtherClass
appelé someObject
. J'appellerais myObject.insert(someObject)
et à l'intérieur de la insert
méthode, il y aurait de la magie qui récupérerait un String
pour le mettre dans le List<String>
.
Supposons maintenant que je n'ai qu'une String
valeur et aucun SomeOtherClass
objet à insérer. En supposant que je ne peux pas modifier la insert
méthode car cela casserait tout dans ce système. Dois-je alors surcharger la insert
méthode? Ou dois-je créer un nouvel objet à SomeOtherClass
chaque 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 String
représentation de SomeOtherObject
ce qui était un objet de domaine.