Suponha que eu esteja trabalhando em um sistema razoavelmente grande existente. Eu tenho um objeto myObjectde classe MyClass(pelo exemplo, suponha que eu esteja trabalhando em Java). myObjecté uma composição que contém Collection, digamos, a, Liste outros objetos que (acho) são irrelevantes. Ele contém métodos delegados que servem apenas para invocar os métodos dos Listquais é composto, a fim de garantir que Listele não seja exposto (desculpe se minha terminologia está incorreta).
Digamos que este Listseja um List<String>método, mas, por algum motivo, o principal acesso é um método de máscara para classe SomeOtherClass. Se eu quisesse inserir um novo par de valores no meu List, teria um objeto SomeOtherClasschamado someObject. Eu chamaria myObject.insert(someObject)e dentro do insertmétodo haveria alguma mágica que recuperaria um Stringpara colocar no List<String>.
Supondo agora que eu tenha apenas um Stringvalor e nenhum SomeOtherClassobjeto para inserir. Supondo que não posso modificar o insertmétodo, porque isso quebraria tudo neste sistema. Então devo sobrecarregar o insertmétodo? Ou devo criar um novo objeto SomeOtherClasstoda vez que quiser ligar insert?
Eu acho que se eu sobrecarregasse, seria algo assim ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Este exemplo é um quebra-cabeça artificial baseado em uma situação semelhante (um pouco mais complexa) em relação à sobrecarga que encontrei ontem. Expandirei se houver algo que não esteja claro.
Este seria um local apropriado para sobrecarregar um método? Caso contrário, quando devo sobrecarregar um método?
magicStringMethod()no meu exemplo, no meu caso, obteria uma Stringrepresentação do SomeOtherObjectque era um objeto de domínio.