Padrão "Observable"?

5 respostas
J

Caros amigos do fórum, posso estar cometendo uma heresia ou até mesmo mostrando minha “desconhecida” ignorância, mas há um artigo postado neste grupo que fala sobre o padrão “Observable”?
Pelo meu conhecimento e anos de trabalho em desenvolvimento de sistemas corporativos, nunca tinha ouvido esta palavra.
O Padrão que conheço e utilizo é o OBSERVER.
Poderia parecer frescura, mas como sei que há muitos amigos que utilizam este site para incrementar sua base de conhecimento, acho interessante elucidarmos (se alguém puder ajudar :slight_smile: ) a real existência desse termo.
Existe? É um neologismo? Ou foi um deslize de quem escreveu o artigo?
Sabemos que as traduções e/ou diferenças de linguagens nos pregam grandes peças na área de TI.

Desde já agradeço aos que puderem contribuir!

[]´s

5 Respostas

W

Ate onde eu sei o pattern eh Observer.

No java tem a classe Observable e a interface Observer, nao usei muito essas duas mas (corrijam se eu estiver errado) se vc criar um classe e herda Observable vc pode adicionar a funcionalidade de “capturar” quando o objeto foi alterado ou mudou seu estado de alguma maneira.

por exemplo :

import java.util.*;

public class User implements Observer {

	
	public void update(Observable obs, Object o ) {
		System.out.println("Status changed");
	}
	
	public User() {
		
		UserAccounts account = new UserAccounts("daniel", "teste", false);

		account.addObserver(this);
		
		account.setStatus(true);
		
	}
	
	public static void main(String[] args) {		
		new User();
	}

}


class UserAccounts extends Observable {
	
	String name, password;
	boolean activated ;
	
	public UserAccounts(String name, String password, boolean activated) {
		this.name = name ; 
		this.password = password ; 
		this.activated = activated;
	}
	
	public void setStatus(boolean status) {
		this.activated = status ;
		this.setChanged();
		this.notifyObservers();
	}
	
	public boolean getStatus() {
		return this.activated;
	}
		
}

Toda vez que eu chamar setStatus na minha class UserAccounts vou executara setChanged() e notifyObservers() que vai dizer pra minha classe Observer (no caso a propria Users) que o meu objeto UsersAccount foi modificado.

As partes mais importantes desse exemplo sao :

account.addObserver(this);

Coloquei o “this” porque a classe User implements Observer e eu escrevi o metodo update.

E na classe UserAccounts :

public void setStatus(boolean status) {
	this.activated = status ;
	this.setChanged();
	this.notifyObservers();
}

que manda a notificacao pros Observers.

ps: nao repara nesse exemplo sem sentido so foi pra tentar dar um exemplo. :slight_smile:

Provavelmente foi um deslize da pessoa que escreveu o artigo eh facil confundir quando vc ta digitando Observer Observable.

//Daniel

J

Pois é Daniel, também acho que foi deslize. Mas como foi mencionado várias vezes no texto… achei melhor confirmar!

Realmente existe essa classe. Trabalhei com ela algumas vezes mas prefiro implementar a minha solução!
Bom, fica aí o aviso aos estudiosos do grupo. O Padrão é Observer!

Abraço a todos!

Obrigado pela colaboração Daniel!

Leozin

eu também conheço como Observer, mas whatever, já ví gente falando que SOA = Serviço Orientado a Arquitetura, nenhum Observable me assusta mais rsrs

mas é só corrigir, pode ter alguém que tenha se enganado na hora da digitação

T

vc pode considerar “observable” como “passível de ser observado”…

J

A tradução é válida, mas o emprego incorreto!
O Padrão Observer engloba os objetos observáveis e os observadores (qeu atuam).

Obrigado pela colaboração!

Forte abraço

Criado 18 de maio de 2008
Ultima resposta 19 de mai. de 2008
Respostas 5
Participantes 4