Supponiamo che sto lavorando su un sistema esistente, abbastanza grande. Ho un oggetto, myObject
di classe MyClass
(per esempio, supponiamo che io stia lavorando in Java). myObject
è una composizione contenente un Collection
, diciamo, un List
e altri oggetti che (penso) sono irrilevanti. Contiene metodi delegati che servono solo a ricorrere ai metodi di List
cui è composto, al fine di garantire List
che 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 SomeOtherClass
chiamato someObject
. Chiamerei myObject.insert(someObject)
e all'interno del insert
metodo ci sarebbe stata qualche magia che avrebbe recuperato un String
da mettere nel List<String>
.
Supponiamo ora di avere solo un String
valore e nessun SomeOtherClass
oggetto da inserire. Supponendo che non riesco a modificare il insert
metodo perché si romperà tutto in questo sistema. Quindi dovrei sovraccaricare il insert
metodo? O dovrei creare un nuovo oggetto SomeOtherClass
ogni 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 String
rappresentazione di SomeOtherObject
quale era un oggetto dominio.