diff --git a/pom.xml b/pom.xml
index 6d779700f..cc59a846a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -195,6 +195,7 @@
arrange-act-assert
transaction-script
filterer
+ simple-factory
diff --git a/simple-factory/src/main/java/com/iluwatar/simplefactory/App.java b/simple-factory/src/main/java/com/iluwatar/simplefactory/App.java
new file mode 100644
index 000000000..898efe6d3
--- /dev/null
+++ b/simple-factory/src/main/java/com/iluwatar/simplefactory/App.java
@@ -0,0 +1,16 @@
+package com.iluwatar.simplefactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class App {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
+
+ public static void main(String[] args) {
+ Car car1 = CarSimpleFactory.getCar(CarSimpleFactory.carTypes.FORD);
+ Car car2 = CarSimpleFactory.getCar(CarSimpleFactory.carTypes.FERRARI);
+ LOGGER.info(car1.getDescription());
+ LOGGER.info(car2.getDescription());
+ }
+}
diff --git a/simple-factory/src/main/java/com/iluwatar/simplefactory/Car.java b/simple-factory/src/main/java/com/iluwatar/simplefactory/Car.java
new file mode 100644
index 000000000..82ff4ebe0
--- /dev/null
+++ b/simple-factory/src/main/java/com/iluwatar/simplefactory/Car.java
@@ -0,0 +1,10 @@
+package com.iluwatar.simplefactory;
+
+/**
+ * Car interface
+ */
+public interface Car {
+
+ public String getDescription();
+
+}
diff --git a/simple-factory/src/main/java/com/iluwatar/simplefactory/CarSimpleFactory.java b/simple-factory/src/main/java/com/iluwatar/simplefactory/CarSimpleFactory.java
new file mode 100644
index 000000000..33dbe7b88
--- /dev/null
+++ b/simple-factory/src/main/java/com/iluwatar/simplefactory/CarSimpleFactory.java
@@ -0,0 +1,29 @@
+package com.iluwatar.simplefactory;
+
+
+/**
+ * Factory of cars
+ */
+public class CarSimpleFactory {
+
+ /*
+ * Enumeration for different types of cars
+ */
+ static enum carTypes {
+ FORD, FERRARI
+ };
+
+ /*
+ * Factory method takes as parameter a car type and initiate the appropriate class
+ */
+ public static Car getCar(carTypes type) {
+ switch (type) {
+ case FORD:
+ return new Ford();
+ case FERRARI:
+ return new Ferrari();
+ default:
+ throw new IllegalArgumentException("Model not supported.");
+ }
+ }
+}
diff --git a/simple-factory/src/main/java/com/iluwatar/simplefactory/Ferrari.java b/simple-factory/src/main/java/com/iluwatar/simplefactory/Ferrari.java
new file mode 100644
index 000000000..f9f1d8492
--- /dev/null
+++ b/simple-factory/src/main/java/com/iluwatar/simplefactory/Ferrari.java
@@ -0,0 +1,14 @@
+package com.iluwatar.simplefactory;
+
+/**
+ * Ferrari implementation
+ */
+public class Ferrari implements Car {
+
+ static final String DESCRIPTION = "This is Ferrari.";
+
+ @Override
+ public String getDescription() {
+ return DESCRIPTION;
+ }
+}
diff --git a/simple-factory/src/main/java/com/iluwatar/simplefactory/Ford.java b/simple-factory/src/main/java/com/iluwatar/simplefactory/Ford.java
new file mode 100644
index 000000000..0adf4b66b
--- /dev/null
+++ b/simple-factory/src/main/java/com/iluwatar/simplefactory/Ford.java
@@ -0,0 +1,14 @@
+package com.iluwatar.simplefactory;
+
+/**
+ * Ford implementation
+ */
+public class Ford implements Car {
+
+ static final String DESCRIPTION = "This is Ford.";
+
+ @Override
+ public String getDescription() {
+ return DESCRIPTION;
+ }
+}