Observer Pattern
This commit is contained in:
parent
719097fe69
commit
eb4e192cad
@ -1,5 +1,4 @@
|
||||
import Comportements.ComportementAPiedAvecHache;
|
||||
import Comportements.ComportementParlerCommeUnePrincesse;
|
||||
import Person.eMode;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args){
|
||||
@ -8,9 +7,7 @@ public class Main {
|
||||
System.out.println(s.afficheTous());
|
||||
System.out.println(s.emmetreUnSonTous());
|
||||
System.out.println(s.lancerCombar());
|
||||
s.changerComportementCombat(s.liste.get(0), new ComportementAPiedAvecHache());
|
||||
s.changerComportementEmmetreSon(s.liste.get(0), new ComportementParlerCommeUnePrincesse());
|
||||
System.out.println(s.emmetreUnSonTous());
|
||||
s.changerEtat(eMode.GUERRE);
|
||||
System.out.println(s.lancerCombar());
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
package Person;
|
||||
|
||||
import Comportements.ComportementCrier;
|
||||
import Comportements.ComportementCombatAvecCheval;
|
||||
import Comportements.ComportementCrier;
|
||||
|
||||
public class Chevalier extends Personnage {
|
||||
|
||||
|
||||
public Chevalier(String nom) {
|
||||
super(nom);
|
||||
public Chevalier(Organisation etatMajor, String nom) {
|
||||
super(etatMajor, nom);
|
||||
this.comportementCombat = new ComportementCombatAvecCheval();
|
||||
this.comportementEmmetreSon = new ComportementCrier();
|
||||
}
|
||||
|
@ -4,8 +4,8 @@ import Comportements.ComportementAPiedAvecHache;
|
||||
import Comportements.ComportementCrier;
|
||||
|
||||
public class Fantasssin extends Personnage {
|
||||
public Fantasssin(String nom) {
|
||||
super(nom);
|
||||
public Fantasssin(Organisation etatMajor, String nom) {
|
||||
super(etatMajor, nom);
|
||||
this.comportementCombat = new ComportementAPiedAvecHache();
|
||||
this.comportementEmmetreSon = new ComportementCrier();
|
||||
}
|
||||
|
5
src/Person/ObservateurAbstrait.java
Normal file
5
src/Person/ObservateurAbstrait.java
Normal file
@ -0,0 +1,5 @@
|
||||
package Person;
|
||||
|
||||
public interface ObservateurAbstrait {
|
||||
public void update(eMode comportement);
|
||||
}
|
29
src/Person/Organisation.java
Normal file
29
src/Person/Organisation.java
Normal file
@ -0,0 +1,29 @@
|
||||
package Person;
|
||||
|
||||
|
||||
public class Organisation extends SujetObserveAbstrait {
|
||||
protected eMode modeFonctionnement;
|
||||
protected Organisation parent;
|
||||
|
||||
public Organisation() {
|
||||
this.modeFonctionnement = eMode.ND;
|
||||
this.parent = null;
|
||||
}
|
||||
|
||||
public Organisation(Organisation parent) {
|
||||
this.modeFonctionnement = eMode.ND;
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
public void setModeFonctionnement(eMode modeFonctionnement) {
|
||||
this.modeFonctionnement = modeFonctionnement;
|
||||
this.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
for (ObservateurAbstrait o : liste) {
|
||||
o.update(modeFonctionnement);
|
||||
}
|
||||
}
|
||||
}
|
@ -3,18 +3,24 @@ package Person;
|
||||
import Comportements.ComportementCombat;
|
||||
import Comportements.ComportementEmmetreSon;
|
||||
|
||||
public abstract class Personnage {
|
||||
public class Personnage implements ObservateurAbstrait {
|
||||
protected String nom;
|
||||
protected ComportementCombat comportementCombat;
|
||||
protected ComportementEmmetreSon comportementEmmetreSon;
|
||||
protected eMode etatFonctionnement = eMode.ND;
|
||||
|
||||
protected Personnage(String nom) {
|
||||
protected Personnage(Organisation etatMajor, String nom) {
|
||||
this.nom = nom;
|
||||
this.comportementCombat = null;
|
||||
this.comportementEmmetreSon = null;
|
||||
|
||||
if (etatMajor != null)
|
||||
etatMajor.attach(this);
|
||||
}
|
||||
|
||||
public abstract String getNom();
|
||||
public String getNom() {
|
||||
return nom;
|
||||
}
|
||||
|
||||
public void setComportementCombat(ComportementCombat comportementCombat) {
|
||||
this.comportementCombat = comportementCombat;
|
||||
@ -29,9 +35,30 @@ public abstract class Personnage {
|
||||
|
||||
public String Combattre() {
|
||||
if (this.comportementCombat != null)
|
||||
return this.comportementCombat.combattre();
|
||||
return this.comportementCombat.combattre() + " \n" + this.getEtat();
|
||||
else {
|
||||
return "Ohhh, je suis trop faible pour combattre !";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void update(eMode comportement) {
|
||||
this.etatFonctionnement = comportement;
|
||||
}
|
||||
|
||||
public String getEtat() {
|
||||
String etat;
|
||||
switch (etatFonctionnement) {
|
||||
case GUERRE:
|
||||
etat = "En Guerre !";
|
||||
break;
|
||||
case PAIX:
|
||||
etat = "En paix !";
|
||||
break;
|
||||
default:
|
||||
etat = "De quoi ?";
|
||||
break;
|
||||
}
|
||||
return etat;
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import Comportements.ComportementParlerCommeUnePrincesse;
|
||||
public class Princesse extends Personnage {
|
||||
|
||||
public Princesse(String nom) {
|
||||
super(nom);
|
||||
super(null, nom);
|
||||
this.comportementEmmetreSon = new ComportementParlerCommeUnePrincesse();
|
||||
}
|
||||
|
||||
@ -13,5 +13,4 @@ public class Princesse extends Personnage {
|
||||
public String getNom() {
|
||||
return "Je suis " + this.nom + " princesse des princesses";
|
||||
}
|
||||
|
||||
}
|
||||
|
23
src/Person/SujetObserveAbstrait.java
Normal file
23
src/Person/SujetObserveAbstrait.java
Normal file
@ -0,0 +1,23 @@
|
||||
package Person;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public abstract class SujetObserveAbstrait {
|
||||
|
||||
ArrayList<ObservateurAbstrait> liste;
|
||||
|
||||
protected SujetObserveAbstrait() {
|
||||
liste = new ArrayList<ObservateurAbstrait>();
|
||||
}
|
||||
|
||||
public void attach(ObservateurAbstrait observateurAbstrait) {
|
||||
liste.add(observateurAbstrait);
|
||||
}
|
||||
|
||||
|
||||
public void remove(ObservateurAbstrait observateurAbstrait) {
|
||||
liste.remove(observateurAbstrait);
|
||||
}
|
||||
|
||||
public abstract void update();
|
||||
}
|
3
src/Person/eMode.java
Normal file
3
src/Person/eMode.java
Normal file
@ -0,0 +1,3 @@
|
||||
package Person;
|
||||
|
||||
public enum eMode {ND, PAIX, GUERRE}
|
@ -1,14 +1,12 @@
|
||||
import Comportements.ComportementCombat;
|
||||
import Comportements.ComportementEmmetreSon;
|
||||
import Person.Chevalier;
|
||||
import Person.Fantasssin;
|
||||
import Person.Personnage;
|
||||
import Person.Princesse;
|
||||
import Person.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SimulationJeu {
|
||||
ArrayList<Personnage> liste;
|
||||
Organisation o;
|
||||
|
||||
public SimulationJeu() {
|
||||
liste = new ArrayList<Personnage>();
|
||||
@ -32,9 +30,10 @@ public class SimulationJeu {
|
||||
}
|
||||
|
||||
public void creationPersonnages() {
|
||||
this.o = new Organisation();
|
||||
Princesse p = new Princesse("Fiona");
|
||||
Chevalier z = new Chevalier("Zodiac");
|
||||
Fantasssin f = new Fantasssin("Fantastic");
|
||||
Chevalier z = new Chevalier(o, "Zodiac");
|
||||
Fantasssin f = new Fantasssin(o, "Fantastic");
|
||||
|
||||
liste.add(p);
|
||||
liste.add(z);
|
||||
@ -58,4 +57,8 @@ public class SimulationJeu {
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public void changerEtat(eMode etat) {
|
||||
this.o.setModeFonctionnement(etat);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user