Minha internet é bloqueada, não consigo pesquisar sobre isso no google. Peguei um livro na biblioteca sobre isso, mas o cara que tá com ele ainda não devolveu.
Eu possuo uma classe Celeiro, uma classe Abstrata Ração, que tem 2 filhos (Milho e Soja) e uma interface que é um listener.
Classe Celeiro, não colei todos os métodos senão fica muito grande. O que acontece é que quando adicionar um saco eu quero notificar o listener de que um saco foi adicionado.
[code]public class Celeiro {
private int id;
private int qtdadeMax;
private int qtdAtual;
private ArrayList<Racao> estoque = new ArrayList<Racao>();
private ArrayList<Listener> olheiro = new ArrayList<Listener>();
public Celeiro(int id, int qtdadeMax) {
this.id = id;
this.qtdadeMax = qtdadeMax;
}
public void addListener(Listener l) {
olheiro.add(l);
}
public void removeListener(Listener l) {
olheiro.remove(l);
}
public void adicionaSaco(T r) {
if (qtdAtual < qtdadeMax) {
estoque.add(r);
qtdAtual++;
notificacaoNovoSaco(o);
}
}
public void notificacaoNovoSaco(EventObject o) {
for (Listener listener : olheiro) {
listener.entrouNovoSaco(o);
}
}[/code]
Interface Listener:
[code]public interface Listener {
void entrouNovoSaco(EventObject objeto);
void chegouNaMetade(EventObject objeto);
void chegouNoFinal(EventObject objeto);
}[/code]
Listener que vai implementar a interface:
[code]public class EchoListener implements Listener {
public void entrouNovoSaco(EventObject objeto) {
System.out.println("Saco Adicionado no Celeiro: ");
}
public void chegouNaMetade(EventObject objeto) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void chegouNoFinal(EventObject objeto) {
throw new UnsupportedOperationException("Not supported yet.");
}
}[/code]
O que está acontecendo é que no metodo da classe celeiro ele pede um EventObject como parâmetro e eu nao sei quem eu deveria passar como parâmetro no método. Eu já fiz esse padrão observer com uma string, mas o construtor da classe recebia uma string também, aí era de fácil compreensão. “Observe que nesses métodos é enviado um objeto EventObject. Ao criar um objeto desses, passe como parâmetro o objeto Celeiro.” Tentei passar e não rolou também.
E quando entrar um saco novo, ele quer que identifique de qual celeiro que veio o saco. Deveria ter um atributo do tipo Celeiro na classe EchoListener pra isso e colocar no método de notificação? Tem essa observação aqui:
Espero que com isso possam me ajudar, não sei se consegui explicar direito a parada. To perdido.
Valeu galera.