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?