Decida se vale a pena substituir o clone
Se você decidir substituir o clone, lembre-se que são necessárias duas coisas:
- Manter a cadeia recursiva das chamadas, invocando o super.clone().
- Substituir as referências de objetos agregados por cópias dos mesmos, uma vez que o super.clone não criara as cópias para os agregados.
Devemos lembrar também que existem exceções a essa regra, uma vez que os objetos agregadores podem ser objetos de valores, sem necessidade de gerar a cópia, podendo ser mantida a mesma referência. Esses problemas que envolvem essa situação podem se tornar complexo, caso a estrutura dos objetos gerenciados seje grande. Diante disso, a melhor prática é deixar o clone de lado e optar por uma das abordagens abaixo:
- Copy Construtor – define um construtor que recebe um objeto dele mesmo fazendo as devidas copias.
- Copy Factory – define um método que copie todas as propriedades de um objeto para outro.
- Copy Factory Reflection – define um método que copie todas as propriedades de um objeto para outro genericamente via reflection.
Para todas as informações, veja o post inicial.
“Só tu és o Senhor. Fizeste os céus, e os mais altos céus, e tudo o que neles há, a terra e tudo o que nela existe, os mares e tudo o que neles existe. Tu deste vida a todos os seres, e os
exércitos dos céus te adoram”. Neemias 9:6