Angenommen, ich arbeite an einem vorhandenen, relativ großen System. Ich habe ein Objekt myObjectder Klasse MyClass(zum Beispiel nehme ich an, ich arbeite in Java). myObjectist eine Komposition Collection, die beispielsweise a Listund andere Objekte enthält, die (glaube ich) irrelevant sind. Es enthält Delegate-Methoden, die nur dazu dienen, die Methoden aufzurufen, aus denen Listes besteht, um sicherzustellen, dass Listes nicht verfügbar gemacht wird (Entschuldigung, wenn meine Terminologie falsch ist).
Nehmen wir an, dies Listist eine, List<String>aber aus irgendeinem Grund ist die Hauptzugriffsmethode eine Maskenmethode für die Klasse SomeOtherClass. Wenn ich ein neues Wertepaar in mein einfügen wollte, Listhätte ich ein Objekt SomeOtherClassnamens aufgerufen someObject. Ich würde anrufen myObject.insert(someObject)und innerhalb der insertMethode würde es etwas Magie geben, die ein abrufen würde String, um es in das zu setzen List<String>.
Angenommen, ich habe nur einen StringWert und kein SomeOtherClassObjekt zum Einfügen. Angenommen, ich kann die insertMethode nicht ändern , da sie alles in diesem System beschädigen würde. Dann sollte ich die insertMethode überladen ? Oder sollte ich SomeOtherClassjedes Mal ein neues Objekt erstellen, wenn ich anrufen möchte insert?
Ich denke, wenn ich es überladen würde, würde es ungefähr so aussehen ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Dieses Beispiel ist ein erfundenes Rätsel, das auf einer ähnlichen (etwas komplexeren) Situation in Bezug auf Überlastung basiert, auf die ich gestern gestoßen bin. Ich werde es erweitern, wenn etwas unklar ist.)
Wäre dies ein geeigneter Ort, um eine Methode zu überladen? Wenn nicht, wann sollte ich eine Methode überladen?
magicStringMethod()In meinem Beispiel würde in meinem Fall eine StringDarstellung erhalten, bei SomeOtherObjectder es sich um ein Domänenobjekt handelt.