Mudando de estado

Olá pessoal,

Alguém tem idéia de fazer com que o objeto veja se o seu atributo foi alterado e se foi fazer uma ação.

Em vez de fazer com que chame o método de setAtributo() e dentro desse chamar outro método. Pq assim fica ruim chamando método dentro de outro método.

Alguém sabe?

Agradeço atenção. :?

Eu particularmente não entendi nada.

Você define um valor inicial para seu atributo, e se ele foi modificado você quer tomar deteminada ação, é isso?

tipo:

if(this.a != "x"){ doIt(); }

Foi mal, eu não expliquei direito.

Tenho um objeto contendo meus atributos e métodos( tem setAtributo(boolean), getAtributo() ).
A partir de outro objeto, chamo o método setAtributo(true).
Em vez de eu chamar outro método dentro desse que chamei, queria que um método qualquer ficasse observando o valor do atributo e quando modificado(no caso TRUE), e fazia o que está dentro do método que está observando.
Queria isso, pq não queria que o método chamasse outro e depois chama outro, e aí trava tudo.
O meu projeto está acontecendo isso.

Abraços

PS: Rafa, o que vc fez eu estava fazendo antes, e eu queria de outro jeito para não acontecer o que está acontecendo no meu projeto.

Valeu mesmo

mas se vc fizer algo que fique “escutando” não vai ficar mais lento?

Vai, mas eu acho que só assim vou conseguir evitar o meu problema de chamar um método dentro do outro e correr o risco de travar, como está acontecendo.

O correto mesmo é vc fazer isso, por exemplo. Como ocorre no padrão Observer/Observable:

[code]public void setAlgo( String algo ) {
this.algo = algo;
estadoAlterado();
}

public void estadoAlterado() {
//notifica quem tiver que notificar
//ou faz qq outra coisa
}[/code]

http://java.sun.com/docs/books/tutorial/javabeans/properties/bound.html
http://jbeans.sourceforge.net/user_guide/events_conversion.html

Valeu galera,
Daniel só uma dúvida. Quando eu chamar o método estadoAlterado() e esse chamar outro método, o método setAlgo( String algo ) não vai ficar preso até que o último método esteja terminado. E se no caso o último método esteja esperando uma requisição do cliente, tipo listen.
Eu não sei se falei besteira, mais é mais ou menos nisso que estou me enrolando.

Você pode, por exemplo, usar Threads para disparar os eventos, não pode?

Ou cria uma validação dentro do setAtributo.

void setAtributo(A a){ if(modificado){ doIt(); }else{ this.a = a; modificado=true; }

Putz, ficou bem porquinho essa implementação, acho que a sugestão do Daniel tá bem legal.

Threads pode ser.
É pensando aqui, vai ser uma boa…

Lipe, vi os artigos muito legais valeu mesmo.
Vou futucar aqui, qq alteração comunico.

Valeu pessoal.
Abraços :slight_smile:

AOP, Proxies, Decorators

obs.: é muda o estado, não mudar de estado :wink: