added abstract-factory sample
This commit is contained in:
parent
54d54097eb
commit
ce5700c1b7
23
abstract-factory/pom.xml
Normal file
23
abstract-factory/pom.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.iluwatar</groupId>
|
||||||
|
<artifactId>java-design-patterns</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<groupId>com.iluwatar</groupId>
|
||||||
|
<artifactId>abstract-factory</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<name>abstract-factory</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
20
abstract-factory/src/main/java/com/iluwatar/App.java
Normal file
20
abstract-factory/src/main/java/com/iluwatar/App.java
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
}
|
5
abstract-factory/src/main/java/com/iluwatar/Army.java
Normal file
5
abstract-factory/src/main/java/com/iluwatar/Army.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public interface Army {
|
||||||
|
|
||||||
|
}
|
5
abstract-factory/src/main/java/com/iluwatar/Castle.java
Normal file
5
abstract-factory/src/main/java/com/iluwatar/Castle.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public interface Castle {
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/ElfArmy.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/ElfArmy.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class ElfArmy implements Army {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Elven Army!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/ElfCastle.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/ElfCastle.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class ElfCastle implements Castle {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Elven castle!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/ElfKing.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/ElfKing.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class ElfKing implements King {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Elven king!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
5
abstract-factory/src/main/java/com/iluwatar/King.java
Normal file
5
abstract-factory/src/main/java/com/iluwatar/King.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public interface King {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public interface KingdomFactory {
|
||||||
|
|
||||||
|
Castle createCastle();
|
||||||
|
King createKing();
|
||||||
|
Army createArmy();
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/OrcArmy.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/OrcArmy.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class OrcArmy implements Army {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Orcish Army!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/OrcCastle.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/OrcCastle.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class OrcCastle implements Castle {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Orcish castle!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
10
abstract-factory/src/main/java/com/iluwatar/OrcKing.java
Normal file
10
abstract-factory/src/main/java/com/iluwatar/OrcKing.java
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class OrcKing implements King {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "This is the Orc king!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
23
pom.xml
Normal file
23
pom.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.iluwatar</groupId>
|
||||||
|
<artifactId>java-design-patterns</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<site>
|
||||||
|
<id>website</id>
|
||||||
|
<url>scp://webhost.company.com/www/website</url>
|
||||||
|
</site>
|
||||||
|
</distributionManagement>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
<modules>
|
||||||
|
<module>abstract-factory</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
Loading…
x
Reference in New Issue
Block a user