SeamFramework.orgCommunity Documentation

Parte III. Baixo aclopamento com tipificação forte

O primeiro grande tema de CDI é baixo acoplamento. Já vimos três meios de alcançar baixo acoplamento:

Estas técnicas permitem uma baixa acoplagem do cliente e servidor. O cliente não é mais fortemente vinculado a uma implementação de uma interface, nem é necessário gerenciar o ciclo de vida da implementação. Esta abordagem deixa que objetos com estado interajam como se eles fossem serviços.

Baixo acoplamento torna um sistema mais dinâmico. O sistema pode responder a mudanças de uma maneira bem definida. No passado, os frameworks que tentaram fornecer as facilidades listadas acima, invariavelmente fizeram sacrificando a tipagem segura (mais notavelmente pelo uso de descritores XML). CDI é a primeira tecnologia, e certamente a primeira especificação na plataforma Java EE, que alcança este nível de baixo acoplamento de uma maneira typesafe.

CDI fornece três importantes facilidades extras adicionalmente ao objetivo da baixa acoplagem:

O segundo grande tema da CDI é a tipificação forte. As informações sobre as dependências, interceptores e decoradores de um bean, e as informações sobre os consumidores de eventos para um produtor de evento, estão contidas em construtores Java typesafe, que podem ser validados pelo compilador.

Você não vê identificadores baseados em strings em código CDI, não é devido ao framework estar escondendo eles de você usando regras espertas de padronização—a chamada \"configuração por convenção\"—mas porque simplesmente não precisamos strings ali!

A vantagem óbvia dessa abordagem é que qualquer IDE pode fornecer auto completion, validação e refactoring sem necessidade de ferramentas especiais. Mas há uma segunda vantagem, menos imediatamente óbvia. Acontece que quando você começar a pensar na identificação de objetos, eventos ou interceptadores por meio de anotações - em vez de nomes -, você tem uma oportunidade para aumentar o nível semântico do seu código.

CDI incentiva você a desenvolver anotações que modelam conceitos. Por exemplo:

em vez de utilizar nomes compostos, como

As anotações são reutilizáveis. Elas ajudam a descrever qualidades comuns de partes diferentes do sistema. Elas nos ajudam a categorizar e entender o nosso código. Elas nos ajudam a lidar com questões comuns, de uma maneira comum. Elas tornam o nosso código mais legível e mais compreensível.

Os estereótipos CDI levam essa idéia um pouco mais longe. Um estereótipo modela um papel comum na sua arquitetura de aplicação. Ele incorpora várias propriedades do papel, incluindo escopo, vínculações de interceptadores, qualificadores, etc, em um único pacote reutilizável. (Certamente, existe também o benefício de aconchegar algumas destas anotações).

Nós agora estamos prontos para verificar mais algumas funcionalidades avançadas de CDI. Tenha em mente que essas funcionalidades existem para tornar nosso código fácil para validar e, ao mesmo tempo, mais fácil de entender. Na maioria das vezes você nem precisa se preocupar em utilizar essas funcionalidades, mas se forem fáceis de usar, você apreciará seu poder.