Supongamos que estoy trabajando en un sistema existente, razonablemente grande. Tengo un objeto, myObject
de clase MyClass
(por el bien del ejemplo, supongamos que estoy trabajando en Java). myObject
es una composición que contiene Collection
, digamos, List
ay otros objetos que (creo) son irrelevantes. Contiene métodos delegados que solo sirven para invocar los métodos de los List
que está compuesto, con el fin de asegurarse de List
que no estén expuestos (lo siento si me equivoco con mi terminología).
Digamos que este List
es un List<String>
pero, por alguna razón, el método de acceso principal es un método de máscara para la clase SomeOtherClass
. Si quisiera insertar un nuevo par de valores en mi List
, entonces tendría un objeto SomeOtherClass
llamado someObject
. Llamaría myObject.insert(someObject)
y dentro del insert
método habría algo de magia que recuperaría un String
para poner en el List<String>
.
Supongamos ahora que solo tengo un String
valor y ningún SomeOtherClass
objeto para insertar. Suponiendo que no puedo modificar el insert
método porque rompería todo en este sistema. Entonces, ¿debería sobrecargar el insert
método? ¿O debería crear un nuevo objeto SomeOtherClass
cada vez que quiera llamar insert
?
Supongo que si lo sobrecargara, se vería así ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Este ejemplo es un rompecabezas artificial basado en una situación similar (un poco más compleja) con respecto a la sobrecarga que encontré ayer. Lo ampliaré si hay algo que no estaba claro)
¿Sería este un lugar apropiado para sobrecargar un método? Si no, ¿cuándo debería sobrecargar un método?
magicStringMethod()
en mi ejemplo, en mi caso, obtendría una String
representación de SomeOtherObject
cuál era un objeto de dominio.