atraso / latência? Eu chamo BS nisso. Deve haver exatamente zero sobrecarga desta prática. ( Editar: Tem sido apontado nos comentários que isso pode, de fato, inibir as otimizações executadas pela VM HotSpot. Eu não sei o suficiente sobre a implementação da VM para confirmar ou negar isso. baseando meu comentário fora da implementação de C ++ de funções virtuais.)
Existe alguma sobrecarga de código. Você tem que criar todos os construtores da classe base que você deseja, encaminhando seus parâmetros.
Eu também não vejo isso como um anti-padrão, por si só. No entanto, vejo isso como uma oportunidade perdida. Em vez de criar uma classe que deriva a classe base apenas para renomear, que tal você criar uma classe que contenha a coleção e ofereça uma interface melhorada específica para cada caso? O seu cache de widgets deve realmente oferecer a interface completa de um mapa? Ou deveria oferecer uma interface especializada?
Além disso, no caso de coleções, o padrão simplesmente não funciona junto com a regra geral de usar interfaces, não implementações - ou seja, no código de coleção simples, você criaria um HashMap<String, Widget>
e então o designaria para uma variável do tipo Map<String, Widget>
. Seu WidgetCache
não pode estender Map<String, Widget>
, porque essa é uma interface. Não pode ser uma interface que estenda a interface base, porque HashMap<String, Widget>
não implementa essa interface e nenhuma outra coleção padrão. E, embora você possa torná-lo uma classe que estenda HashMap<String, Widget>
, você terá que declarar as variáveis como WidgetCache
ou Map<String, Widget>
, e a primeira perde a flexibilidade de substituir uma coleção diferente (talvez a coleção de carregamento lento de ORM) , enquanto o segundo tipo de derrota o ponto de ter a classe.
Alguns desses contrapontos também se aplicam à minha classe especializada proposta.
Estes são todos os pontos a serem considerados. Pode ou não ser a escolha certa. Em ambos os casos, os argumentos oferecidos pelo seu colega não são válidos. Se ele acha que é um anti-padrão, ele deve nomeá-lo.