diff --git a/facade/pom.xml b/facade/pom.xml
new file mode 100644
index 000000000..f7708cb70
--- /dev/null
+++ b/facade/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+
+ com.iluwatar
+ java-design-patterns
+ 1.0-SNAPSHOT
+
+ com.iluwatar
+ facade
+ 1.0-SNAPSHOT
+ facade
+ http://maven.apache.org
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/facade/src/main/java/com/iluwatar/App.java b/facade/src/main/java/com/iluwatar/App.java
new file mode 100644
index 000000000..bd02f5052
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/App.java
@@ -0,0 +1,12 @@
+package com.iluwatar;
+
+public class App
+{
+ public static void main( String[] args )
+ {
+ DwarvenGoldmineFacade facade = new DwarvenGoldmineFacade();
+ facade.startNewDay();
+ facade.digOutGold();
+ facade.endDay();
+ }
+}
diff --git a/facade/src/main/java/com/iluwatar/DwarvenCartOperator.java b/facade/src/main/java/com/iluwatar/DwarvenCartOperator.java
new file mode 100644
index 000000000..ef13611a8
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/DwarvenCartOperator.java
@@ -0,0 +1,15 @@
+package com.iluwatar;
+
+public class DwarvenCartOperator extends DwarvenMineWorker {
+
+ @Override
+ public void work() {
+ System.out.println(name() + " moves gold chunks out of the mine.");
+ }
+
+ @Override
+ public String name() {
+ return "Dwarf cart operator";
+ }
+
+}
diff --git a/facade/src/main/java/com/iluwatar/DwarvenGoldDigger.java b/facade/src/main/java/com/iluwatar/DwarvenGoldDigger.java
new file mode 100644
index 000000000..ea7c7e68e
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/DwarvenGoldDigger.java
@@ -0,0 +1,15 @@
+package com.iluwatar;
+
+public class DwarvenGoldDigger extends DwarvenMineWorker {
+
+ @Override
+ public void work() {
+ System.out.println(name() + " digs for gold.");
+ }
+
+ @Override
+ public String name() {
+ return "Dwarf gold digger";
+ }
+
+}
diff --git a/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java b/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java
new file mode 100644
index 000000000..a8a71bef5
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java
@@ -0,0 +1,37 @@
+package com.iluwatar;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DwarvenGoldmineFacade {
+
+ List workers;
+
+ public DwarvenGoldmineFacade() {
+ workers = new ArrayList<>();
+ workers.add(new DwarvenGoldDigger());
+ workers.add(new DwarvenCartOperator());
+ workers.add(new DwarvenTunnelDigger());
+ }
+
+ public void startNewDay() {
+ for (DwarvenMineWorker worker: workers) {
+ worker.wakeUp();
+ worker.goToMine();
+ }
+ }
+
+ public void digOutGold() {
+ for (DwarvenMineWorker worker: workers) {
+ worker.work();
+ }
+ }
+
+ public void endDay() {
+ for (DwarvenMineWorker worker: workers) {
+ worker.goHome();
+ worker.goToSleep();
+ }
+ }
+
+}
diff --git a/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java b/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java
new file mode 100644
index 000000000..21b936738
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java
@@ -0,0 +1,25 @@
+package com.iluwatar;
+
+public abstract class DwarvenMineWorker {
+
+ public void goToSleep() {
+ System.out.println(name() + " goes to sleep.");
+ }
+
+ public void wakeUp() {
+ System.out.println(name() + " wakes up.");
+ }
+
+ public void goHome() {
+ System.out.println(name() + " goes home.");
+ }
+
+ public void goToMine() {
+ System.out.println(name() + " goes to the mine.");
+ }
+
+ public abstract void work();
+
+ public abstract String name();
+
+}
diff --git a/facade/src/main/java/com/iluwatar/DwarvenTunnelDigger.java b/facade/src/main/java/com/iluwatar/DwarvenTunnelDigger.java
new file mode 100644
index 000000000..b8ef18332
--- /dev/null
+++ b/facade/src/main/java/com/iluwatar/DwarvenTunnelDigger.java
@@ -0,0 +1,15 @@
+package com.iluwatar;
+
+public class DwarvenTunnelDigger extends DwarvenMineWorker {
+
+ @Override
+ public void work() {
+ System.out.println(name() + " creates another promising tunnel.");
+ }
+
+ @Override
+ public String name() {
+ return "Dwarven tunnel digger";
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index b6853a3c0..422ae2387 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,5 +27,22 @@
bridge
composite
decorator
+ facade
-
\ No newline at end of file
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.0
+
+ 1.7
+ 1.7
+
+
+
+
+
+