You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB

package model.cellule.observer;
import model.cellule.Cellule;
import java.util.*;
/**
* Permet à une cellule d'être observée
* @author Yohann Breil
* @author Allan Point
*/
public abstract class ObservableCellule {
/**
* Liste des observeurs de la boucle de jeu. Cette liste servira à notifier les abonnés de la boucle de jeu
*/
List<ObserverCellule> observeurs;
public ObservableCellule(){
observeurs = new LinkedList<>();
}
/**
*
* @param o observeur à attacher
* @throws IllegalArgumentException L'observeur ne peut pas être null
*/
public void attacher(ObserverCellule o) throws IllegalArgumentException{
if(o == null){
throw new IllegalArgumentException("L'observer ne doit pas être null");
}
observeurs.add(o);
}
/**
*
* @param o observeur à détacher
* @throws IllegalArgumentException L'observer ne peut pas être null
*/
public void detacher(ObserverCellule o) throws IllegalArgumentException{
if(o == null){
throw new IllegalArgumentException("L'observer ne doit pas être null");
}
observeurs.remove(o);
}
/**
* Permet de notifier les abonnés de la boucle de jeu
*/
public void notifier(Cellule cellule) {
for (ObserverCellule observeur : observeurs) {
observeur.update(cellule);
}
}
}