Adapter Pattern

Adapter: tạo mới interfaces và implement có những tính năng mới nhầm thay thế class, interfaces cũ.

Ngữ cảnh: Ta đang đánh cá trên 1 tàu đánh cá (FishingBoat) có chức năng sail() and fish() vô tình gặp cướp biển. Ngay bây giờ ta cần xây dựng tàu chiến dựa trên tàu đánh cá có sẵn sail() và thêm khả năng chiến đấu battle().

Đây là tàu đánh cá có sẵn.


public class FishingBoat {
  public void sail() {
     System.out.println("sail...");
  }

  public void fish() {
    System.out.println("fishing ...");
  }
}

Bây giờ ta cần build 1 tàu chiến dựa trên tàu đánh cá.


/**
* The interface expected by the client.<br>
* A Battleship can fire and move.
*
*/
public interface BattleShip {
   void fire();
   void move();
}

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();
  }
}