Skip to content
Snippets Groups Projects
Commit d678c421 authored by Peter Hertkorn's avatar Peter Hertkorn
Browse files

Add strategy pattern for alien behaviour

parent 2f068369
No related branches found
No related tags found
No related merge requests found
......@@ -2,9 +2,23 @@ package aliensimulator;
public abstract class Alien {
public abstract void darstellen();
protected ErdeBesuchverhalten erdeBesuchverhalten;
abstract void darstellen();
public void fliegen() {
System.out.println("Ich fliege durch den Weltraum.");
}
public void erdeBesuchen(){
erdeBesuchverhalten.erdeBesuchen();
}
public ErdeBesuchverhalten getErdeBesuchverhalten() {
return erdeBesuchverhalten;
}
public void setErdeBesuchverhalten(ErdeBesuchverhalten erdeBesuchverhalten) {
this.erdeBesuchverhalten = erdeBesuchverhalten;
}
}
package aliensimulator;
public class AlienMars extends Alien {
public AlienMars(){
erdeBesuchverhalten = new ErdeFeindlichBesuchen();
}
public void darstellen() {
System.out.println("Ich bin das Alien vom Mars.");
}
public void darstellen() {
System.out.println("Ich bin das Alien vom Mars.");
}
}
......@@ -2,6 +2,10 @@ package aliensimulator;
public class AlienMond extends Alien {
public AlienMond(){
erdeBesuchverhalten = new ErdeFreundlichBesuchen();
}
public void darstellen() {
System.out.println("Ich bin das Alien vom Mond.");
}
......
......@@ -3,13 +3,25 @@ package aliensimulator;
public class AlienSimulator {
public static void main(String[] args) {
Alien alienMars = new AlienMars();
alienMars.darstellen();
alienMars.fliegen();
Alien alien = new AlienMars();
alien.darstellen();
alien.fliegen();
// Änderung zur Laufzeit des Verhaltens des Aliens vom Mars
System.out.println("Verhalten vom Alien vom Mars VOR der Änderung seines Verhaltens:");
alienMars.erdeBesuchen();
System.out.println("Verhalten vom Alien vom Mars NACH der Änderung seines Verhaltens:");
alienMars.setErdeBesuchverhalten(new ErdeFreundlichBesuchen());
alienMars.erdeBesuchen();
alien = new AlienMond();
alien.darstellen();
alien.fliegen();
Alien alienMond = new AlienMond();
alienMond.darstellen();
alienMond.fliegen();
alienMond.erdeBesuchen();
Alien alienVenus = new AlienVenus();
alienVenus.darstellen();
alienVenus.fliegen();
alienVenus.erdeBesuchen();
}
}
package aliensimulator;
public class AlienVenus extends Alien {
public AlienVenus(){
erdeBesuchverhalten = new ErdeFreundlichBesuchen();
}
public void darstellen() {
System.out.println("Ich bin das Alien von der Venus.");
}
}
package aliensimulator;
public interface ErdeBesuchverhalten {
public void erdeBesuchen();
}
package aliensimulator;
public class ErdeFeindlichBesuchen implements ErdeBesuchverhalten{
public void erdeBesuchen() { System.out.println("Ich besuche die Erde. Die Menschen schmecken gut."); }
}
package aliensimulator;
public class ErdeFreundlichBesuchen implements ErdeBesuchverhalten {
public void erdeBesuchen (){
System.out.println("Ich besuche die Erde. Die Menschen sind wundervoll.");
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment