sábado, 14 de março de 2009

Effective java 3

Voltando a minha jornada pelo Effective Java de Joshua Bloch, vou tratar de um tópico MUITO polêmico, trata-se de como garantir a que as classes não sejam instanciadas.
Isso é um tremendo caroço, no seu livro Bloch diz que isso pode ser usado de maneira sensata, por exemplo: para agrupar métodos sobre valores primitivos ou Arrays, agrupar em objetos que implementam determinada interface, principalmente java.util.collection. Entretanto, uma crítica muito comum a esse tipo de prática é que ela subverte a programação Orientada a Objetos, opinião que cá entre nós é a minha também.
Sobre o como garantir que suas classes não sejam instanciadas através da prática de tornar privados seu construtores (mesmo com os construtores privados dá para usar reflection, mas vamos deixar isso de lado por enquanto), mas Bloch deixa bem claro, tornar um classe abstract não garante que essa classe não será instanciada, uma classe abstract pode ser instanciada através de uma sub-classe, talvez se classe fosse abstract e final?

Nenhum comentário: