Tópicos

Introdução To top of page

Essa diretriz focaliza o design de JavaBeans e as diferentes opções que um designer pode fazer.

Para obter informações adicionais sobre JavaBeans, consulte Conceitos: JavaBeans.

Propriedades do JavaBean To top of page

Internamente, um valor de propriedade pode ser armazenado como um campo privado, mas também é possível calculá-lo. O designer tem a opção de pré-calcular o valor da propriedade ou de utilizar avaliação ociosa, em que o valor é calculado apenas quando solicitado por um responsável pela chamada.

O designer também tem a opção de limitar ou restringir a propriedade. Se a propriedade for limitada ou restringida, o designer deverá decidir sobre o mecanismo de eventos e notificação.

Eventos e Notificação To top of page

Para a implementação do mecanismo de notificação, o designer tem duas opções:

  • Utilizar as classes PropertyChangeSupport e PropertyChangeEvent a partir do pacote java.beans.
  • Criar um mecanismo de notificação personalizado

As classes do pacote java.beans fornecem implementação que é aplicável na maioria das situações. PropertyChangeEvent contém a referência ao objeto que disparou o evento, o nome da propriedade como Cadeia e dois objetos que representam os valores novo e velho da propriedade. A classe PropertyChangeSupport mantém uma coleta de PropertyChangeListeners e contém o código para a notificação no método firePropertyChange.

Diagrama descrito no texto de acompanhamento.

PropertyChangeSupport é comumente utilizado para JavaBeans que constituem parte das interfaces do usuário.

A notificação personalizada pode ser apropriada onde o código extra da criação de objetos de evento precisar ser minimizado. O aspecto negativo é que o implementador deve implementar o mecanismo de notificação. O implementador da notificação personalizada deve lembrar-se de que um encadeamento diferente pode incluir ou remover os listeners durante o processo de notificação. Para fornecer o comportamento correto, a maior parte das soluções cria uma cópia da coleta que contém os listeners; a notificação é então executada com a utilização da cópia. A maior parte das implementações publicadas cria essa cópia no início do processo de notificação, resultando na criação de vários clones e em desempenho diminuído. Entretanto, como as notificações são mais comuns que as adições ou remoções do listener, uma cópia de longa duração pode ser criada antecipadamente durante a adição ou remoção dos listeners e, em seguida, reutilizada para notificações, fornecendo uma execução mais rápida.

Considerando a produtividade dos desenvolvedores, a notificação personalizada deve ser tentada somente quando o desempenho do suporte à alteração de propriedade a partir do pacote java.beans provar ser o gargalo.

Os exemplos a seguir demonstram a utilização do suporte à alteração de propriedade a partir do pacote java.beans e a utilização de um mecanismo de notificação personalizado.

 

Exemplo: JavaBean Tank utilizando java.beans.PropertyChangeSupport

Aqui, temos um JavaBean representando um Tank, que possui uma propriedade do limite: nível. Quando o nível do Tank é alterado, o Tank dispara um PropertyChangeEvent, que é manipulado pelo objeto TankController.

Diagrama descrito no texto de acompanhamento.

 

Exemplo: Java Bean Tank utilizando Notificação Personalizada

No exemplo a seguir, a classe Tank é implementada com um mecanismo de notificação personalizado mais eficiente, evitando a criação de objetos durante a notificação.

Diagrama descrito no texto de acompanhamento.




Conteúdo desenvolvido ou parcialmente desenvolvido por Inferdata Corporation.

Rational Unified Process   2003.06.15