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