Dê preferência às hierarquias de classes em vez das classes tagged.
Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.
O que é uma classe Tagged?
São classes que representam mais de um tipo de objeto e utilizando um atributo que identifique qual o objeto foi instanciado.
Vamos ver o exemplo citado no livro Java Efetivo que torna mais clara essa afirmação.
Veja que a classe representa tanto um circulo quanto um retângulo e que alguns campos só fazem sentido quando é um dos tipos das instâncias.
Problemas
- Muito Boilerplate
- Campos de tag ( campos de tem objetivo de identificar o tipo da instância do objeto)
- Legibilidade ruim, pois tem muitas particularidade para cada tipo
- Uso desnecessário de memória, visto que nem todos os campos serão utilizados para cada tipo
- Mais difícil o uso de campos final
- Criação de muitos construtores
- Maior possibilidade de erros de execução
Resumindo
Classes Tagged são verbosas, sujeitas a erros e ineficientes.
Se analisarmos bem as classes tagged são uma forma de estrutura do que poderia ser uma hierarquia de classes.
Então o livro mostra como seria refatorar o exemplo para o caminho certo, usando hierarquia.
Vamos ver?
Passos
De maneira bem sútil é orientada uma sequência de passos:
- Criar uma classe abstrata com os métodos que não possuem comportamento diferente de acordo com o tipo
- Criar as classes concretas, considerando cada tipo do campo tag para uma implementação diferente.
Resultado
A nova estrutura permite:
- Diminuir boilerplate
- Evitar erros de excução
- Fácil entendimento
- Campos final
- Felixibilidade
Ou seja, sempre pense ao criar uma classe tagged se não seria melhor utilizar a hierarquia de classes.
Top comments (1)
Muito boa a dica!!! Valeu por compartilhar com a comunidade!!! Abraços!!!