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

Add Dependency Injection for KomponentenFabriken

parent 144cbe91
No related branches found
No related tags found
No related merge requests found
File added
File added
File added
......@@ -6,12 +6,11 @@ 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.ufos.*;
import aliensimulator.verhalten.ErdeFreundlichBesuchen;
import aliensimulator.verhalten.ErdeNeutralAdapter;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class AlienSimulator {
......@@ -62,13 +61,15 @@ public class AlienSimulator {
yautja.fliegen();
yautja.erdeBesuchen();
UfoFactory alienUfoFactory = new AlienUfoFactory();
Injector i = Guice.createInjector(new KomponentenModul());
UfoFactory alienUfoFactory = i.getInstance(AlienUfoFactory.class);
Ufo alienSternenkreuzer = alienUfoFactory.createUfo("sternenkreuzer");
System.out.println(alienSternenkreuzer);
Ufo alienTransportschiff = alienUfoFactory.createUfo("transportschiff");
System.out.println(alienTransportschiff);
UfoFactory predatorUfoFactory = new PredatorUfoFactory();
UfoFactory predatorUfoFactory = i.getInstance(PredatorUfoFactory.class);
Ufo predatorSternenkreuzer = predatorUfoFactory.createUfo("sternenkreuzer");
System.out.println(predatorSternenkreuzer);
Ufo predatorTransportschiff = predatorUfoFactory.createUfo("transportschiff");
......
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.*;
import com.google.inject.AbstractModule;
public class KomponentenModul extends AbstractModule {
@Override
protected void configure() {
bind(KomponentenFabrik.class)
.annotatedWith(AlienKomponenten.class)
.to(AlienKomponentenFabrik.class);
bind(KomponentenFabrik.class)
.annotatedWith(PredatorKomponenten.class)
.to(PredatorKomponentenFabrik.class);
}
}
package aliensimulator.ufos;
import aliensimulator.ufos.komponenten.KomponentenFabrik;
import aliensimulator.ufos.komponenten.PredatorKomponenten;
import aliensimulator.ufos.komponenten.PredatorKomponentenFabrik;
import javax.inject.Inject;
public class PredatorUfoFactory implements UfoFactory {
@Inject
private @PredatorKomponenten KomponentenFabrik komponentenFabrik;
@Override
public Ufo createUfo(String type) {
Ufo ufo = null;
KomponentenFabrik komponentenFabrik = new PredatorKomponentenFabrik();
switch (type) {
case "sternenkreuzer" :
......
package aliensimulator.ufos.komponenten;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import javax.inject.Qualifier;
@Qualifier
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface AlienKomponenten {}
\ No newline at end of file
package aliensimulator.ufos.komponenten;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import javax.inject.Qualifier;
@Qualifier
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface PredatorKomponenten {}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment