domenica 22 dicembre 2013

Java implementazione pattern observer

Il pattern OBSERVER rientra nella categoria dei pattern "comportamentali".
Esistono 3 categorie principali di pattern:
  • CREAZIONALI ( es. SINGLETON, FACTORY, ABSTRACT FACTORY)
  • STRUTTURALI  (es. DECORATOR, PROXY, FACADE)
  • COMPORTAMENTALI (es. OBSERVER, STATE,STRATEGY)
Per realizzare questo pattern la classe che deve "segnalare" le modifiche agli osservatori dovrà estendere la classe java.util.Observable, mentre le classi che ricevono la segnalazione dovranno implementare l'interfaccia java.util.Observer che definisce il metodo  update.

Vediamo un semplice esempio.

CLASSE OBSERVABLE


package it.pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
public class Lista extends Observable {
 private List<String> lista=new ArrayList<>();
 public List<String> getLista() {
  return lista;
 }
 public void addString(String elemento){
  setChanged();
  notifyObservers(elemento);
  lista.add(elemento);
 }
}


CLASSE OBSERVER

package it.pattern;
import java.util.Observable;
import java.util.Observer;
public class ListaObserver implements Observer {
 @Override
 public void update(Observable o, Object arg) {
  System.out.println("Aggiunto elemento "+arg);
 }
}


Vediamo di seguito un esempio di utilizzo:

package it.pattern;

public class Test {
 public static void main(String[] args) {
  Lista l=new Lista();
  l.addObserver(new ListaObserver());
  l.addString("dsjksdkjd");
  l.addString("dsddsds");

 }

}


Il risultato dell'esecuzione del codice sarà il seguente:

Aggiunto elemento dsjksdkjd
Aggiunto elemento dsddsds


Nessun commento:

Posta un commento