diff --git a/src/aliensimulator/ufos/AlienUfoFactory.java b/src/aliensimulator/ufos/AlienUfoFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ed79179dec796e5c3b635b4ae467475043bea81
--- /dev/null
+++ b/src/aliensimulator/ufos/AlienUfoFactory.java
@@ -0,0 +1,35 @@
+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;
+    }
+}
diff --git a/src/aliensimulator/ufos/UfoFactory.java b/src/aliensimulator/ufos/UfoFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bf492b586b775a140d0b014653a91267318fb1a
--- /dev/null
+++ b/src/aliensimulator/ufos/UfoFactory.java
@@ -0,0 +1,7 @@
+package aliensimulator.ufos;
+
+public interface UfoFactory {
+
+    public Ufo createUfo(String type);
+
+}
diff --git a/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java
new file mode 100644
index 0000000000000000000000000000000000000000..c17af0bd15de28d85460e0516b9f20564096facf
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java
@@ -0,0 +1,19 @@
+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();
+    }
+
+}
diff --git a/src/aliensimulator/ufos/komponenten/Antrieb.java b/src/aliensimulator/ufos/komponenten/Antrieb.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7f7fdc8c0f38fa0eb0841546886254569003954
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Antrieb.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Antrieb {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Hyperantrieb.java b/src/aliensimulator/ufos/komponenten/Hyperantrieb.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2e8d0ad1d07cfc229d3a89c86da9dbdcd32bfdb
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Hyperantrieb.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Hyperantrieb implements Antrieb {
+    @Override
+    public String toString() {
+        return "Hyperantrieb";
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java
new file mode 100644
index 0000000000000000000000000000000000000000..2bbdb415ac5a7d241dc6574ad974a76869b11adf
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java
@@ -0,0 +1,9 @@
+package aliensimulator.ufos.komponenten;
+
+public interface KomponentenFabrik {
+
+    public Antrieb createAntrieb();
+    public Schild createSchild();
+    public Waffe createWaffe();
+}
+
diff --git a/src/aliensimulator/ufos/komponenten/Laserkanone.java b/src/aliensimulator/ufos/komponenten/Laserkanone.java
new file mode 100644
index 0000000000000000000000000000000000000000..04def289cf1a52ebfb164bef4568fe883ceb4057
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Laserkanone.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Laserkanone implements Waffe {
+    @Override
+    public String toString() {
+        return "Laserkanone";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Metaphasenschild.java b/src/aliensimulator/ufos/komponenten/Metaphasenschild.java
new file mode 100644
index 0000000000000000000000000000000000000000..7139e8864c324f5cd06e33cb79141b444574ba2e
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Metaphasenschild.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Metaphasenschild implements Schild {
+    @Override
+    public String toString() {
+        return "Metaphasenschild";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Phaserkanone.java b/src/aliensimulator/ufos/komponenten/Phaserkanone.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff2b82c3cb9ca8d973a175bafd86a0b2ae0c112f
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Phaserkanone.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Phaserkanone implements Waffe {
+    @Override
+    public String toString() {
+        return "Phaserkanone";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java
new file mode 100644
index 0000000000000000000000000000000000000000..f09d47cf34cb62df71ea125a3b49891cadec3b25
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java
@@ -0,0 +1,18 @@
+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();
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/Schild.java b/src/aliensimulator/ufos/komponenten/Schild.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccb0c1c155184d3a222546178aa911341850618d
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Schild.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Schild {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java b/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b29b17c44cfb379b906eae178025a8ebc2ac0b2
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Verteidigungsschild implements Schild {
+    @Override
+    public String toString() {
+        return "Verteidigungsschild";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Waffe.java b/src/aliensimulator/ufos/komponenten/Waffe.java
new file mode 100644
index 0000000000000000000000000000000000000000..02cb6a7f56d442cd73aaebddab22531bc44c77cc
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Waffe.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Waffe {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Warpantrieb.java b/src/aliensimulator/ufos/komponenten/Warpantrieb.java
new file mode 100644
index 0000000000000000000000000000000000000000..c2faa88ebca1bad16e495889a4f266940f4fe848
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Warpantrieb.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Warpantrieb implements Antrieb {
+    @Override
+    public String toString() {
+        return "Warpantrieb";
+    }
+}