Supponiamo che io stia lavorando su un sistema esistente, ragionevolmente grande. Ho un oggetto, myObject della classe MyClass (per l'esempio, supponiamo che io stia lavorando in Java). myObject è una composizione contenente un Collection , ad esempio un List e altri oggetti che (penso) sono irrilevanti. Contiene metodi delegati che servono solo a richiamare i metodi del List di cui è composto, al fine di garantire che List non sia stato esposto (scusa se ho sbagliato la terminologia).
Diciamo che questo List è un List<String> ma, per qualche ragione, il metodo di accesso principale è un metodo di maschera per la classe SomeOtherClass . Se volessi inserire una nuova coppia di valori nel mio List , avrei un oggetto di SomeOtherClass chiamato someObject . Chiamerei myObject.insert(someObject) e all'interno del metodo insert ci sarebbe un po 'di magia che recuperi un String da inserire in List<String> .
Supponiamo ora di avere solo un valore String e nessun oggetto SomeOtherClass da inserire. Supponendo che non sia possibile modificare il metodo insert perché interromperà tutto in questo sistema. Quindi dovrei sovraccaricare il metodo insert ? O dovrei creare un nuovo oggetto di SomeOtherClass ogni volta che voglio chiamare insert ?
Suppongo che se l'ho sovraccaricato, sembrerebbe qualcosa di simile ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Questo esempio è un puzzle inventato basato su una situazione simile (leggermente più complessa) riguardante il sovraccarico che ho incontrato ieri. Espanderò se c'è qualcosa che non è chiaro)
Questo sarebbe un posto appropriato per sovraccaricare un metodo? In caso contrario, quando devo sovraccaricare un metodo?