diff --git a/adapter/src/main/java/com/iluwatar/adapter/BattleFishingBoat.java b/adapter/src/main/java/com/iluwatar/adapter/BattleFishingBoat.java
new file mode 100644
index 000000000..ffd73de3a
--- /dev/null
+++ b/adapter/src/main/java/com/iluwatar/adapter/BattleFishingBoat.java
@@ -0,0 +1,29 @@
+package com.iluwatar.adapter;
+
+/**
+ *
+ * Adapter class. Adapts the interface of the device ({@link FishingBoat}) into {@link BattleShip}
+ * interface expected by the client ({@link Captain}).
+ * In this case we added a new function fire to suit the interface. We are reusing the
+ * {@link FishingBoat} without changing itself. The Adapter class can just map the functions of the
+ * Adaptee or add, delete features of the Adaptee.
+ *
+ */
+public class BattleFishingBoat implements BattleShip {
+
+ private FishingBoat boat;
+
+ public BattleFishingBoat() {
+ boat = new FishingBoat();
+ }
+
+ @Override
+ public void fire() {
+ System.out.println("fire!");
+ }
+
+ @Override
+ public void move() {
+ boat.sail();
+ }
+}
diff --git a/adapter/src/main/java/com/iluwatar/adapter/BattleShip.java b/adapter/src/main/java/com/iluwatar/adapter/BattleShip.java
new file mode 100644
index 000000000..90b18f758
--- /dev/null
+++ b/adapter/src/main/java/com/iluwatar/adapter/BattleShip.java
@@ -0,0 +1,14 @@
+package com.iluwatar.adapter;
+
+/**
+ * The interface expected by the client.
+ * A Battleship can fire and move.
+ *
+ */
+public interface BattleShip {
+
+ void fire();
+
+ void move();
+
+}
diff --git a/adapter/src/main/java/com/iluwatar/adapter/Captain.java b/adapter/src/main/java/com/iluwatar/adapter/Captain.java
new file mode 100644
index 000000000..8c48daf69
--- /dev/null
+++ b/adapter/src/main/java/com/iluwatar/adapter/Captain.java
@@ -0,0 +1,33 @@
+package com.iluwatar.adapter;
+
+/**
+ * The Captain uses {@link BattleShip} to fight.
+ * This is the client in the pattern.
+ */
+public class Captain implements BattleShip {
+
+ private BattleShip battleship;
+
+ public Captain() {
+
+ }
+
+ public Captain(BattleShip battleship) {
+ this.battleship = battleship;
+ }
+
+ public void setBattleship(BattleShip battleship) {
+ this.battleship = battleship;
+ }
+
+ @Override
+ public void fire() {
+ battleship.fire();
+ }
+
+ @Override
+ public void move() {
+ battleship.move();
+ }
+
+}
diff --git a/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java b/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java
new file mode 100644
index 000000000..d2f9dae25
--- /dev/null
+++ b/adapter/src/main/java/com/iluwatar/adapter/FishingBoat.java
@@ -0,0 +1,18 @@
+package com.iluwatar.adapter;
+
+/**
+ *
+ * Device class (adaptee in the pattern). We want to reuse this class
+ *
+ */
+public class FishingBoat {
+
+ public void sail() {
+ System.out.println("The Boat is moving to that place");
+ }
+
+ public void fish() {
+ System.out.println("fishing ...");
+ }
+
+}