Suponha que eu esteja trabalhando em um sistema razoavelmente grande existente. Eu tenho um objeto myObject
de classe MyClass
(pelo exemplo, suponha que eu esteja trabalhando em Java). myObject
é uma composição que contém Collection
, digamos, a, List
e outros objetos que (acho) são irrelevantes. Ele contém métodos delegados que servem apenas para invocar os métodos dos List
quais é composto, a fim de garantir que List
ele não seja exposto (desculpe se minha terminologia está incorreta).
Digamos que este List
seja 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 SomeOtherClass
chamado someObject
. Eu chamaria myObject.insert(someObject)
e dentro do insert
método haveria alguma mágica que recuperaria um String
para colocar no List<String>
.
Supondo agora que eu tenha apenas um String
valor e nenhum SomeOtherClass
objeto para inserir. Supondo que não posso modificar o insert
método, porque isso quebraria tudo neste sistema. Então devo sobrecarregar o insert
método? Ou devo criar um novo objeto SomeOtherClass
toda 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 String
representação do SomeOtherObject
que era um objeto de domínio.