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

Add abstract factory for Ufos

parent 2e862592
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,10 @@ import aliensimulator.aliens.*;
import aliensimulator.predators.Predator;
import aliensimulator.predators.PredatorFactory;
import aliensimulator.predators.Yautja;
import aliensimulator.ufos.AlienUfoFactory;
import aliensimulator.ufos.PredatorUfoFactory;
import aliensimulator.ufos.Ufo;
import aliensimulator.ufos.UfoFactory;
import aliensimulator.verhalten.ErdeFreundlichBesuchen;
import aliensimulator.verhalten.ErdeNeutralAdapter;
......@@ -51,5 +55,16 @@ public class AlienSimulator {
yautja.fliegen();
yautja.erdeBesuchen();
UfoFactory alienUfoFactory = new AlienUfoFactory();
Ufo alienSternenkreuzer = alienUfoFactory.createUfo("sternenkreuzer");
System.out.println(alienSternenkreuzer);
Ufo alienTransportschiff = alienUfoFactory.createUfo("transportschiff");
System.out.println(alienTransportschiff);
UfoFactory predatorUfoFactory = new PredatorUfoFactory();
Ufo predatorSternenkreuzer = predatorUfoFactory.createUfo("sternenkreuzer");
System.out.println(predatorSternenkreuzer);
Ufo predatorTransportschiff = predatorUfoFactory.createUfo("transportschiff");
System.out.println(predatorTransportschiff);
}
}
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
import aliensimulator.ufos.komponenten.PredatorKomponentenFabrik;
public class PredatorUfoFactory implements UfoFactory {
@Override
public Ufo createUfo(String type) {
Ufo ufo = null;
KomponentenFabrik komponentenFabrik = new PredatorKomponentenFabrik();
switch (type) {
case "sternenkreuzer" :
ufo = new Sternenkreuzer(komponentenFabrik);
ufo.setName("Predator Sternenkreuzer");
ufo.herstellen();
break;
case "transportschiff" :
ufo = new Transportschiff(komponentenFabrik);
ufo.setName("Predator Transportschiff");
ufo.herstellen();
break;
}
return ufo;
}
}
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
public class Sternenkreuzer extends Ufo {
public Sternenkreuzer(KomponentenFabrik komponentenFabrik) {
super();
setKomponentenFabrik(komponentenFabrik);
}
public void herstellen() {
setAntrieb(komponentenFabrik.createAntrieb());
setSchild(komponentenFabrik.createSchild());
setWaffe(komponentenFabrik.createWaffe());
}
public String toString() {
return "Sternenkreuzer\n" + super.toString();
}
}
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
public class Transportschiff extends Ufo {
public Transportschiff(KomponentenFabrik komponentenFabrik) {
super();
setKomponentenFabrik(komponentenFabrik);
}
public void herstellen() {
setAntrieb(komponentenFabrik.createAntrieb());
setSchild(komponentenFabrik.createSchild());
}
public String toString() {
return "Transportschiff\n" + super.toString();
}
}
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.Antrieb;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
import aliensimulator.ufos.komponenten.Schild;
import aliensimulator.ufos.komponenten.Waffe;
public abstract class Ufo {
KomponentenFabrik komponentenFabrik;
String name;
Antrieb antrieb;
Schild schild;
Waffe waffe;
public abstract void herstellen();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Antrieb getAntrieb() {
return antrieb;
}
public void setAntrieb(Antrieb antrieb) {
this.antrieb = antrieb;
}
public Schild getSchild() {
return schild;
}
public void setSchild(Schild schild) {
this.schild = schild;
}
public Waffe getWaffe() {
return waffe;
}
public void setWaffe(Waffe waffe) {
this.waffe = waffe;
}
public KomponentenFabrik getKomponentenFabrik() {
return komponentenFabrik;
}
public void setKomponentenFabrik(KomponentenFabrik komponentenFabrik) {
this.komponentenFabrik = komponentenFabrik;
}
@Override
public String toString() {
StringBuffer result = new StringBuffer();
result.append("Name: " + name + "\n");
if (antrieb != null) {
result.append(antrieb + "\n");
}
if (schild != null) {
result.append(schild + "\n");
}
if (waffe != null) {
result.append(waffe + "\n");
}
return result.toString();
}
}
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