디자인 패턴 ~Adapter~

1. 소개



GoF의 디자인 패턴에서 Adapter 패턴을 정리합니다.

2. Adapter 패턴이란?


  • Adapter라는 영어 단어는 일치시키는 것을 의미합니다.
  • Adapter 패턴은, 이미 제공되고 있지만 그대로 사용할 수 없는 것에 대해서, 필요한 형태로 변환해 이용하기 위한 방식입니다.

  • 상속을 이용한 방법과 위양을 이용한 방법이 있습니다.

  • 래퍼 패턴이라고도 합니다. 래퍼는 감싸는 것을 의미합니다.
  • GoF 디자인 패턴은 구조와 관련된 디자인 패턴으로 분류됩니다.

  • 3. 샘플 클래스 다이어그램



    3-1. ~계승을 이용한 방법~





    3-2. ~위양을 이용한 방법~





    4. 샘플 프로그램



    학생의 이름과 연령을 표시하는 프로그램입니다.

    4-1. ~계승을 이용한 방법~



    4-1-1. Human 클래스



    원래 제공되는 클래스입니다.

    Human.java
    public class Human {
    
        private String name;
        private int age;
    
        public Human(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public void printName() {
            System.out.println(name);
        }
    
        public void printAge() {
            System.out.println(age);
        }
    }
    

    4-1-2. Student 인터페이스



    필요한 인터페이스입니다.

    Student.java
    public interface Student {
        public abstract void showName();
        public abstract void showAge();
    }
    

    4-1-3. HumanAdapter 클래스



    Adapter 역할이 되는 클래스입니다.

    HumanAdapter.java
    public class HumanAdapter extends Human implements Student {
    
        public HumanAdapter(String name, int age) {
            super(name, age);
        }
    
        public void showName() {
            printName();
        }
    
        public void showAge() {
            printAge();
        }
    }
    

    4-1-4. Main 클래스



    메인 처리를 실시하는 클래스입니다.

    Main.java
    public class Main {
        public static void main(String[] args) {
            Student student = new HumanAdapter("田中", 25);
            student.showName();
            student.showAge();
        }
    }
    

    4-1-5. 실행 결과


    田中
    25
    

    4-2. ~위양을 이용한 방법~



    4-2-1. Human 클래스



    원래 제공되는 클래스입니다.

    Human.java
    public class Human {
    
        private String name;
        private int age;
    
        public Human(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public void printName() {
            System.out.println(name);
        }
    
        public void printAge() {
            System.out.println(age);
        }
    }
    

    4-2-2. Student 인터페이스



    필요한 인터페이스입니다.

    Student.java
    public interface Student {
        public abstract void showName();
        public abstract void showAge();
    }
    

    4-2-3. HumanAdapter 클래스



    Adapter 역할이 되는 클래스입니다.

    HumanAdapter.java
    public class HumanAdapter implements Student {
    
        private Human human;
    
        public HumanAdapter(String name, int age) {
            this.human = new Human("田中", 25);;
        }
    
        public void showName() {
            human.printName();
        }
    
        public void showAge() {
            human.printAge();
        }
    }
    

    4-2-4. Main 클래스



    메인 처리를 실시하는 클래스입니다.

    Main.java
    public class Main {
        public static void main(String[] args) {
            Student student = new HumanAdapter("田中", 25);
            student.showName();
            student.showAge();
        }
    }
    

    4-2-5. 실행 결과


    田中
    25
    

    5. 장점



    Adapter 패턴은 기존 클래스에 한 껍질을 걸어 필요한 클래스를 만듭니다. 이 패턴을 사용하면 필요한 메소드를 신속하게 만들 수 있습니다. 만약 버그가 검출되었다고 해도, 기존의 클래스가 충분히 테스트되고 있다면, Adapter역의 클래스를 중점적으로 조사하면 좋게 되므로, 프로그램의 체크가 편해집니다.
    또한 Adapter 패턴을 사용하면 기존 클래스에 손을 추가하지 않고 기능을 구현할 수 있으므로 기존 클래스를 다시 테스트하는 번거로움을 줄일 수 있습니다.

    6. GitHub


  • htps : // 기주 b. 코 m / 이타나카 730 /

  • 7. 디자인 패턴 목록


  • GoF 디자인 패턴 요약

  • 8. 참고



    이번 기사 및 샘플 프로그램은 이하의 서적을 바탕으로 작성하였습니다.
  • Java 언어로 배우는 디자인 패턴 입문

  • 매우 이해하기 쉽고 공부가되었습니다. 감사합니다.
    디자인 패턴이나 샘플 프로그램에 대한 설명이 상세하게 쓰여져 있으므로, 꼭 서적의 분도 봐 주세요.

    좋은 웹페이지 즐겨찾기