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

Add predator and factories

parent 1d20db3b
No related branches found
No related tags found
No related merge requests found
......@@ -3,13 +3,18 @@ package aliensimulator;
import aliens_3rdparty.AlienFromNY;
import aliens_3rdparty.NeutralBesuchen;
import aliensimulator.aliens.*;
import aliensimulator.predators.Predator;
import aliensimulator.predators.PredatorFactory;
import aliensimulator.predators.Yautja;
import aliensimulator.verhalten.ErdeFreundlichBesuchen;
import aliensimulator.verhalten.ErdeNeutralAdapter;
public class AlienSimulator {
public static void main(String[] args) {
Alien alienMars = new AlienMars();
AlienFactory alienFactory = new AlienFactory();
Alien alienMars = alienFactory.createAlien("mars");
alienMars.darstellen();
alienMars.fliegen();
......@@ -20,17 +25,17 @@ public class AlienSimulator {
alienMars.setErdeBesuchverhalten(new ErdeFreundlichBesuchen());
alienMars.erdeBesuchen();
Alien alienMond = new AlienMond();
Alien alienMond = alienFactory.createAlien("mond");
alienMond.darstellen();
alienMond.fliegen();
alienMond.erdeBesuchen();
Alien alienVenus = new AlienVenus();
Alien alienVenus = alienFactory.createAlien("venus");
alienVenus.darstellen();
alienVenus.fliegen();
alienVenus.erdeBesuchen();
Alien alienFromNY = new AlienAdapter(new AlienFromNY());
Alien alienFromNY = alienFactory.createAlien("ny");
alienFromNY.darstellen();
alienFromNY.fliegen();
System.out.println("Verhalten vom Alien von NY VOR der Änderung seines Verhaltens:");
......@@ -38,5 +43,13 @@ public class AlienSimulator {
alienFromNY.setErdeBesuchverhalten(new ErdeNeutralAdapter(new NeutralBesuchen()));
System.out.println("Verhalten vom Alien von NY NACH der Änderung seines Verhaltens:");
alienFromNY.erdeBesuchen();
PredatorFactory predatorFactory = new PredatorFactory();
Predator yautja = predatorFactory.createPredator("yautja");
yautja.darstellen();
yautja.fliegen();
yautja.erdeBesuchen();
}
}
package aliensimulator.aliens;
import aliens_3rdparty.AlienFromNY;
public class AlienFactory {
public Alien createAlien(String type) {
if (type.equals("mars")) {
return new AlienMars();
} else if (type.equals("mond")) {
return new AlienMond();
} else if (type.equals("venus")) {
return new AlienVenus();
} else if (type.equals("ny")) {
return new AlienAdapter(new AlienFromNY());
} else return null;
}
}
package aliensimulator.predators;
import aliens_3rdparty.NeutralBesuchen;
import aliensimulator.verhalten.ErdeNeutralAdapter;
public class HishQuTen extends Predator {
public HishQuTen() {
this.setErdeBesuchverhalten(new ErdeNeutralAdapter(new NeutralBesuchen()));
}
@Override
public void darstellen() {
System.out.println("Ich bin ein Hish-Qu-Ten.");
}
}
package aliensimulator.predators;
import aliensimulator.verhalten.ErdeBesuchverhalten;
public abstract class Predator {
private ErdeBesuchverhalten erdeBesuchverhalten;
public 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.predators;
public class PredatorFactory {
public Predator createPredator(String type) {
if (type.equals("yautja")) {
return new Yautja();
} else if (type.equals("hishquten")) {
return new HishQuTen();
} else return null;
}
}
package aliensimulator.predators;
import aliens_3rdparty.ZerstoererischBesuchen;
import aliensimulator.verhalten.ErdeZerstoererischAdapter;
public class Yautja extends Predator {
public Yautja() {
this.setErdeBesuchverhalten(new ErdeZerstoererischAdapter());
}
@Override
public void darstellen() {
System.out.println("Ich bin ein Yautja.");
}
}
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