Mudando de estado

11 respostas
rodrigo.achilles

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. :?

11 Respostas

Rafael_Nunes

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(); }

rodrigo.achilles

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

K

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

rodrigo.achilles

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.

danieldestro

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

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

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

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

rodrigo.achilles

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.

danieldestro

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

Rafael_Nunes

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.

rodrigo.achilles

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:

pcalcado

AOP, Proxies, Decorators

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

Criado 24 de maio de 2005
Ultima resposta 24 de mai. de 2005
Respostas 11
Participantes 6