From 87259699086a76619a451f4b01141687362b65ab Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Wed, 13 Aug 2014 22:19:28 +0300 Subject: [PATCH] added facade sample --- facade/pom.xml | 23 ++++++++++++ facade/src/main/java/com/iluwatar/App.java | 12 ++++++ .../com/iluwatar/DwarvenCartOperator.java | 15 ++++++++ .../java/com/iluwatar/DwarvenGoldDigger.java | 15 ++++++++ .../com/iluwatar/DwarvenGoldmineFacade.java | 37 +++++++++++++++++++ .../java/com/iluwatar/DwarvenMineWorker.java | 25 +++++++++++++ .../com/iluwatar/DwarvenTunnelDigger.java | 15 ++++++++ pom.xml | 19 +++++++++- 8 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 facade/pom.xml create mode 100644 facade/src/main/java/com/iluwatar/App.java create mode 100644 facade/src/main/java/com/iluwatar/DwarvenCartOperator.java create mode 100644 facade/src/main/java/com/iluwatar/DwarvenGoldDigger.java create mode 100644 facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java create mode 100644 facade/src/main/java/com/iluwatar/DwarvenMineWorker.java create mode 100644 facade/src/main/java/com/iluwatar/DwarvenTunnelDigger.java 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 + + + + + +