시냅스

어댑터 패턴 Java로 구현 본문

디자인 패턴

어댑터 패턴 Java로 구현

ted k 2022. 9. 2. 20:19

Adapter Pattern

상속을 활용한 Adapter

 

합성을 활용한 Adapter

 

  • 클라이언트에서 사용하던 방식대로 호출하여 사용할 수 있도록 조정해주는 기능
  • 서로 일치하지 않는 인터페이스를 변경하지 않고 중간에서 호출하여 사용할 수 있도록 제공
  • 상속을 활용하는 Adapter
  • 객체 합성의 방법으로 구현하는 Adapter
  • Adapter를 사용함으로써 클라이언트가 사용하는 방식은 동일하면서 여러 기능이 제공될 수 있다.

 

  • Target
    • 클라이언트가 사용할 인터페이스를 정의하고 있는 클래스
  • Client
    • Target 인터페이스를 사용하는 객체
  • Adaptee
    • 실제의 새롭거나 적용될 기능이 제공되는 클래스
  • Adapter
    • Target 인터페이스에 Adaptee의 인터페이스를 맞춰주는 클래스

 

구현

package adapter;

interface Print { // adaptee
    public abstract void printWeak();
    public abstract void printStrong();
}

class Banner { // target
    private String string;
    public Banner(String string) {
        this.string = string;
    }
    public void showWithParen() {
        System.out.println("(" + string + ")");
    }
    public void showWithAster() {
        System.out.println("*" + string + "*");
    }
}

class PrintBanner extends Banner implements Print{
    public PrintBanner(String string) {
        super(string);
    }

    @Override
    public void printWeak() {
        showWithParen();
    }

    @Override
    public void printStrong() {
        showWithAster();
    }
}

public class AdapterImpl {
    public static void main(String[] args) {
        Print p = new PrintBanner("Hello");
        p.printWeak();
        p.printStrong();
    }
}
Comments