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

Add Dependency Injection for KomponentenFabriken

parent f6fcc8f3
No related branches found
No related tags found
No related merge requests found
Showing
with 151 additions and 0 deletions
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.AlienKomponenten;
import aliensimulator.ufos.komponenten.AlienKomponentenFabrik;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
import javax.inject.Inject;
public class AlienUfoFactory implements UfoFactory {
@Inject
private @AlienKomponenten KomponentenFabrik komponentenFabrik;
public AlienUfoFactory() {
}
@Override
public Ufo createUfo(String type) {
Ufo ufo = null;
switch (type) {
case "sternenkreuzer" :
ufo = new Sternenkreuzer(komponentenFabrik);
ufo.setName("Alien Sternenkreuzer");
ufo.herstellen();
break;
case "transportschiff" :
ufo = new Transportschiff(komponentenFabrik);
ufo.setName("Alien Transportschiff");
ufo.herstellen();
break;
}
return ufo;
}
}
package aliensimulator.ufos;
public interface UfoFactory {
public Ufo createUfo(String type);
}
package aliensimulator.ufos.komponenten;
public class AlienKomponentenFabrik implements KomponentenFabrik {
@Override
public Antrieb createAntrieb() {
return new Hyperantrieb();
}
@Override
public Schild createSchild() {
return new Verteidigungsschild();
}
@Override
public Waffe createWaffe() {
return new Phaserkanone();
}
}
package aliensimulator.ufos.komponenten;
public interface Antrieb {
public String toString();
}
package aliensimulator.ufos.komponenten;
public class Hyperantrieb implements Antrieb {
@Override
public String toString() {
return "Hyperantrieb";
}
}
package aliensimulator.ufos.komponenten;
public interface KomponentenFabrik {
public Antrieb createAntrieb();
public Schild createSchild();
public Waffe createWaffe();
}
package aliensimulator.ufos.komponenten;
public class Laserkanone implements Waffe {
@Override
public String toString() {
return "Laserkanone";
}
}
\ No newline at end of file
package aliensimulator.ufos.komponenten;
public class Metaphasenschild implements Schild {
@Override
public String toString() {
return "Metaphasenschild";
}
}
\ No newline at end of file
package aliensimulator.ufos.komponenten;
public class Phaserkanone implements Waffe {
@Override
public String toString() {
return "Phaserkanone";
}
}
\ No newline at end of file
package aliensimulator.ufos.komponenten;
public class PredatorKomponentenFabrik implements KomponentenFabrik {
@Override
public Antrieb createAntrieb() {
return new Warpantrieb();
}
@Override
public Schild createSchild() {
return new Metaphasenschild();
}
@Override
public Waffe createWaffe() {
return new Laserkanone();
}
}
package aliensimulator.ufos.komponenten;
public interface Schild {
public String toString();
}
package aliensimulator.ufos.komponenten;
public class Verteidigungsschild implements Schild {
@Override
public String toString() {
return "Verteidigungsschild";
}
}
\ No newline at end of file
package aliensimulator.ufos.komponenten;
public interface Waffe {
public String toString();
}
package aliensimulator.ufos.komponenten;
public class Warpantrieb implements Antrieb {
@Override
public String toString() {
return "Warpantrieb";
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment