From ce5700c1b7e9b64476504870b9e41b5972b9aeb0 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Sat, 9 Aug 2014 20:38:00 +0300 Subject: [PATCH] added abstract-factory sample --- abstract-factory/pom.xml | 23 +++++++++++++++++++ .../src/main/java/com/iluwatar/App.java | 20 ++++++++++++++++ .../src/main/java/com/iluwatar/Army.java | 5 ++++ .../src/main/java/com/iluwatar/Castle.java | 5 ++++ .../src/main/java/com/iluwatar/ElfArmy.java | 10 ++++++++ .../src/main/java/com/iluwatar/ElfCastle.java | 10 ++++++++ .../src/main/java/com/iluwatar/ElfKing.java | 10 ++++++++ .../java/com/iluwatar/ElfKingdomFactory.java | 17 ++++++++++++++ .../src/main/java/com/iluwatar/King.java | 5 ++++ .../java/com/iluwatar/KingdomFactory.java | 9 ++++++++ .../src/main/java/com/iluwatar/OrcArmy.java | 10 ++++++++ .../src/main/java/com/iluwatar/OrcCastle.java | 10 ++++++++ .../src/main/java/com/iluwatar/OrcKing.java | 10 ++++++++ .../java/com/iluwatar/OrcKingdomFactory.java | 17 ++++++++++++++ pom.xml | 23 +++++++++++++++++++ 15 files changed, 184 insertions(+) create mode 100644 abstract-factory/pom.xml create mode 100644 abstract-factory/src/main/java/com/iluwatar/App.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/Army.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/Castle.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/ElfArmy.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/ElfCastle.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/ElfKing.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/ElfKingdomFactory.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/King.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/KingdomFactory.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/OrcArmy.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/OrcCastle.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/OrcKing.java create mode 100644 abstract-factory/src/main/java/com/iluwatar/OrcKingdomFactory.java create mode 100644 pom.xml diff --git a/abstract-factory/pom.xml b/abstract-factory/pom.xml new file mode 100644 index 000000000..460d3a09c --- /dev/null +++ b/abstract-factory/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.0-SNAPSHOT + + com.iluwatar + abstract-factory + 1.0-SNAPSHOT + abstract-factory + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + diff --git a/abstract-factory/src/main/java/com/iluwatar/App.java b/abstract-factory/src/main/java/com/iluwatar/App.java new file mode 100644 index 000000000..de3f1a145 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/App.java @@ -0,0 +1,20 @@ +package com.iluwatar; + +public class App +{ + public static void main( String[] args ) + { + createKingdom(new ElfKingdomFactory()); + createKingdom(new OrcKingdomFactory()); + } + + public static void createKingdom(KingdomFactory factory) { + King king = factory.createKing(); + Castle castle = factory.createCastle(); + Army army = factory.createArmy(); + System.out.println("The kingdom was created."); + System.out.println(king); + System.out.println(castle); + System.out.println(army); + } +} diff --git a/abstract-factory/src/main/java/com/iluwatar/Army.java b/abstract-factory/src/main/java/com/iluwatar/Army.java new file mode 100644 index 000000000..0365fad96 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/Army.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public interface Army { + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/Castle.java b/abstract-factory/src/main/java/com/iluwatar/Castle.java new file mode 100644 index 000000000..4cc765bee --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/Castle.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public interface Castle { + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/ElfArmy.java b/abstract-factory/src/main/java/com/iluwatar/ElfArmy.java new file mode 100644 index 000000000..1df451c9c --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/ElfArmy.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class ElfArmy implements Army { + + @Override + public String toString() { + return "This is the Elven Army!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/ElfCastle.java b/abstract-factory/src/main/java/com/iluwatar/ElfCastle.java new file mode 100644 index 000000000..deaf6a58d --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/ElfCastle.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class ElfCastle implements Castle { + + @Override + public String toString() { + return "This is the Elven castle!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/ElfKing.java b/abstract-factory/src/main/java/com/iluwatar/ElfKing.java new file mode 100644 index 000000000..36e51119a --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/ElfKing.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class ElfKing implements King { + + @Override + public String toString() { + return "This is the Elven king!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/ElfKingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/ElfKingdomFactory.java new file mode 100644 index 000000000..1bcd0a2d5 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/ElfKingdomFactory.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +public class ElfKingdomFactory implements KingdomFactory { + + public Castle createCastle() { + return new ElfCastle(); + } + + public King createKing() { + return new ElfKing(); + } + + public Army createArmy() { + return new ElfArmy(); + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/King.java b/abstract-factory/src/main/java/com/iluwatar/King.java new file mode 100644 index 000000000..2a63cb3b1 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/King.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public interface King { + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/KingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/KingdomFactory.java new file mode 100644 index 000000000..db3f9f869 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/KingdomFactory.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public interface KingdomFactory { + + Castle createCastle(); + King createKing(); + Army createArmy(); + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/OrcArmy.java b/abstract-factory/src/main/java/com/iluwatar/OrcArmy.java new file mode 100644 index 000000000..d4e2515f6 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/OrcArmy.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class OrcArmy implements Army { + + @Override + public String toString() { + return "This is the Orcish Army!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/OrcCastle.java b/abstract-factory/src/main/java/com/iluwatar/OrcCastle.java new file mode 100644 index 000000000..daa49f43f --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/OrcCastle.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class OrcCastle implements Castle { + + @Override + public String toString() { + return "This is the Orcish castle!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/OrcKing.java b/abstract-factory/src/main/java/com/iluwatar/OrcKing.java new file mode 100644 index 000000000..b6ba989d7 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/OrcKing.java @@ -0,0 +1,10 @@ +package com.iluwatar; + +public class OrcKing implements King { + + @Override + public String toString() { + return "This is the Orc king!"; + } + +} diff --git a/abstract-factory/src/main/java/com/iluwatar/OrcKingdomFactory.java b/abstract-factory/src/main/java/com/iluwatar/OrcKingdomFactory.java new file mode 100644 index 000000000..161f001a2 --- /dev/null +++ b/abstract-factory/src/main/java/com/iluwatar/OrcKingdomFactory.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +public class OrcKingdomFactory implements KingdomFactory { + + public Castle createCastle() { + return new OrcCastle(); + } + + public King createKing() { + return new OrcKing(); + } + + public Army createArmy() { + return new OrcArmy(); + } + +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..fd2984763 --- /dev/null +++ b/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.0-SNAPSHOT + pom + + + + website + scp://webhost.company.com/www/website + + + + + UTF-8 + + + abstract-factory + + \ No newline at end of file