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