diff --git a/pom.xml b/pom.xml
index b3a47d5ec..ae6290b0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,7 @@
decorator
facade
flyweight
+ proxy
diff --git a/proxy/pom.xml b/proxy/pom.xml
new file mode 100644
index 000000000..7e793ea8f
--- /dev/null
+++ b/proxy/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+
+ com.iluwatar
+ java-design-patterns
+ 1.0-SNAPSHOT
+
+ com.iluwatar
+ proxy
+ 1.0-SNAPSHOT
+ proxy
+ http://maven.apache.org
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/proxy/src/main/java/com/iluwatar/App.java b/proxy/src/main/java/com/iluwatar/App.java
new file mode 100644
index 000000000..1e81f3829
--- /dev/null
+++ b/proxy/src/main/java/com/iluwatar/App.java
@@ -0,0 +1,16 @@
+package com.iluwatar;
+
+public class App
+{
+ public static void main( String[] args )
+ {
+
+ WizardTowerProxy tower = new WizardTowerProxy();
+ tower.enter(new Wizard("Red wizard"));
+ tower.enter(new Wizard("White wizard"));
+ tower.enter(new Wizard("Black wizard"));
+ tower.enter(new Wizard("Green wizard"));
+ tower.enter(new Wizard("Brown wizard"));
+
+ }
+}
diff --git a/proxy/src/main/java/com/iluwatar/Wizard.java b/proxy/src/main/java/com/iluwatar/Wizard.java
new file mode 100644
index 000000000..41c838fdc
--- /dev/null
+++ b/proxy/src/main/java/com/iluwatar/Wizard.java
@@ -0,0 +1,16 @@
+package com.iluwatar;
+
+public class Wizard {
+
+ private String name;
+
+ public Wizard(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+}
diff --git a/proxy/src/main/java/com/iluwatar/WizardTower.java b/proxy/src/main/java/com/iluwatar/WizardTower.java
new file mode 100644
index 000000000..891c4cc59
--- /dev/null
+++ b/proxy/src/main/java/com/iluwatar/WizardTower.java
@@ -0,0 +1,9 @@
+package com.iluwatar;
+
+public class WizardTower {
+
+ public void enter(Wizard wizard) {
+ System.out.println(wizard + " enters the tower.");
+ }
+
+}
diff --git a/proxy/src/main/java/com/iluwatar/WizardTowerProxy.java b/proxy/src/main/java/com/iluwatar/WizardTowerProxy.java
new file mode 100644
index 000000000..4bdefa75d
--- /dev/null
+++ b/proxy/src/main/java/com/iluwatar/WizardTowerProxy.java
@@ -0,0 +1,19 @@
+package com.iluwatar;
+
+public class WizardTowerProxy extends WizardTower {
+
+ private static final int NUM_WIZARDS_ALLOWED = 3;
+
+ private int numWizards;
+
+ @Override
+ public void enter(Wizard wizard) {
+ if (numWizards < NUM_WIZARDS_ALLOWED) {
+ super.enter(wizard);
+ numWizards++;
+ } else {
+ System.out.println(wizard + " is not allowed to enter!");
+ }
+ }
+
+}