Supongamos que estoy trabajando en un sistema existente, razonablemente grande. Tengo un objeto, myObjectde clase MyClass(por el bien del ejemplo, supongamos que estoy trabajando en Java). myObjectes una composición que contiene Collection, digamos, Listay otros objetos que (creo) son irrelevantes. Contiene métodos delegados que solo sirven para invocar los métodos de los Listque está compuesto, con el fin de asegurarse de Listque no estén expuestos (lo siento si me equivoco con mi terminología).
Digamos que este Listes 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 SomeOtherClassllamado someObject. Llamaría myObject.insert(someObject)y dentro del insertmétodo habría algo de magia que recuperaría un Stringpara poner en el List<String>.
Supongamos ahora que solo tengo un Stringvalor y ningún SomeOtherClassobjeto para insertar. Suponiendo que no puedo modificar el insertmétodo porque rompería todo en este sistema. Entonces, ¿debería sobrecargar el insertmétodo? ¿O debería crear un nuevo objeto SomeOtherClasscada 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 Stringrepresentación de SomeOtherObjectcuál era un objeto de dominio.