Angenommen, ich arbeite an einem vorhandenen, relativ großen System. Ich habe ein Objekt myObject
der Klasse MyClass
(zum Beispiel nehme ich an, ich arbeite in Java). myObject
ist eine Komposition Collection
, die beispielsweise a List
und andere Objekte enthält, die (glaube ich) irrelevant sind. Es enthält Delegate-Methoden, die nur dazu dienen, die Methoden aufzurufen, aus denen List
es besteht, um sicherzustellen, dass List
es nicht verfügbar gemacht wird (Entschuldigung, wenn meine Terminologie falsch ist).
Nehmen wir an, dies List
ist 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, List
hätte ich ein Objekt SomeOtherClass
namens aufgerufen someObject
. Ich würde anrufen myObject.insert(someObject)
und innerhalb der insert
Methode 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 String
Wert und kein SomeOtherClass
Objekt zum Einfügen. Angenommen, ich kann die insert
Methode nicht ändern , da sie alles in diesem System beschädigen würde. Dann sollte ich die insert
Methode überladen ? Oder sollte ich SomeOtherClass
jedes 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 String
Darstellung erhalten, bei SomeOtherObject
der es sich um ein Domänenobjekt handelt.