디자인패턴) Adapter pattern with Java

  • 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적응 시킵니다.
  • 서로 일치하지않은 인터페이스를 갖는 클래스들을 함께 동작시키고, 기존 기능을 재사용할 수 있다는 장점이 있습니다.
  • Wrapper라고도 합니다.
  • 두가지 방법이 존재합니다.
 

public interface Car {
    public void getDoor();
    public void getTier();
}

public class SportsCar implements Car{

    @Override
    public void getDoor() {
        System.out.println("I have 2 door");

    }

    @Override
    public void getTier() {
       System.out.println("I have 4 tier");

    }
    
}

public interface Motocycle {
    public void getManufacturer();
    public void getTier();
}

public class BmwMotocycle implements Motocycle{

    @Override
    public void getManufacturer() {
        System.out.println("BMW");

    }

    @Override
    public void getTier() {
        System.out.println("I have 2 tier");

    }
    
}

public class MotocycleAdapter implements Car {
    
    private Motocycle motocycle;

    public MotocycleAdapter(Motocycle motocycle){
        this.motocycle = motocycle;
    }

    @Override
    public void getDoor() {
       System.out.println("I don't have doors");
    }

    @Override
    public void getTier() {
        motocycle.getTier();
    }
    
}

public class main {
    public static void main(String[] argsthrows IOException{

        SportsCar sportsCar = new SportsCar();

        Car motocycleAdapter = new MotocycleAdapter(new BmwMotocycle());
        System.out.println("Car---");
        sportsCar.getDoor();
        sportsCar.getTier();
        System.out.println("Adapter---");
        motocycleAdapter.getDoor();
        motocycleAdapter.getTier();
    }
}

 - 결과


댓글

가장 많이 본 글