Supponiamo che sto lavorando su un sistema esistente, abbastanza grande. Ho un oggetto, myObjectdi classe MyClass(per esempio, supponiamo che io stia lavorando in Java). myObjectè una composizione contenente un Collection, diciamo, un Liste altri oggetti che (penso) sono irrilevanti. Contiene metodi delegati che servono solo a ricorrere ai metodi di Listcui è composto, al fine di garantire Listche non sia esposto (scusate se ho sbagliato la mia terminologia).
Diciamo che questo Listè un List<String>ma, per qualche motivo, il metodo di accesso principale è un metodo maschera per classe SomeOtherClass. Se volessi inserire una nuova coppia di valori nel mio List, allora avrei un oggetto SomeOtherClasschiamato someObject. Chiamerei myObject.insert(someObject)e all'interno del insertmetodo ci sarebbe stata qualche magia che avrebbe recuperato un Stringda mettere nel List<String>.
Supponiamo ora di avere solo un Stringvalore e nessun SomeOtherClassoggetto da inserire. Supponendo che non riesco a modificare il insertmetodo perché si romperà tutto in questo sistema. Quindi dovrei sovraccaricare il insertmetodo? O dovrei creare un nuovo oggetto SomeOtherClassogni volta che voglio chiamare insert?
Immagino che se lo sovraccaricassi, sarebbe simile a questo ...
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) per quanto riguarda il sovraccarico che ho riscontrato ieri. Lo espanderò se c'è qualcosa di poco chiaro)
Questo sarebbe un posto appropriato per sovraccaricare un metodo? In caso contrario, quando dovrei sovraccaricare un metodo?
magicStringMethod()nel mio esempio otterrei, nel mio caso, una Stringrappresentazione di SomeOtherObjectquale era un oggetto dominio.