Adapter 패턴

2026. 4. 17. 18:51·복습/소프트웨어디자인패턴

Adapter 패턴이란?

서로 다른 두 interface를 연결하는 패턴

wrapper 패턴

 

adapter 패턴의 구현방법 2

1. 상속(inheritance): class

이미 존재하는 클래스 A, 필요 메소드를 선언한 interface B

->interface B에 선언된 메소드를 이용해서 class A를 상속받아 class A가 가지고 있는 메소드를 이용(adapter)

== class A 상속 + interface B 구현

=> Main 을 수정하지 않고도, class A 의 구현을 변경할 수 있음

+ java는 다중상속 불가능, 다중구현은 ok

 

ex)

여기서 PrintBanner가 adapter 이다.

Banner class를 상속받고, Print의 추상 메소드를 Banner class의 메소드를 사용해 구현한다.

 

+PrintBanner의 생성자에서 상위 클래스의 생성자를 명시적으로 호출해줘야한다.
(-> 이로인해 하위클래스 메모리가 상위클래스보다 커짐)

상위 클래스인 Banner의 생성자에는 파라미터가 존재하므로, super(string)을 명시적으로 작성하지않으면,

컴파일러가 자동으로 super()을 실행하므로 매개변수가 없어 에러가 난다.

// 상위 클래스
public Banner(String string) {
this.string = string;
}


// 하위 클래스
public PrintBanner(String string) {
super(string); // 상위클래스 생성자 명시적 호출
}

+변수 타입 할당

PrintBanner를 상위클래스인 Print 에 넣은 이유는 추상화때문이다.

java의 런타임환경에서는 Print 가 아닌 PrintBanner의 메소드를 실행한다.

(c++은 반대로 Print의 메소드를 실행한다고... 아오 헷갈료)

Print p = new PrintBanner("Hello");

 

2. 위임(delegation): instance

만약 Print 가 interface가 아니라 abstact class라면?

PrintBanner 클래스에 Banner type 멤버변수를 생성한다.

Print를 상속받아, Banner 인스턴스가 메소드를 실행하도록 하여 추상메소드를 구현한다.

이때, 인스턴스가 동작을 실행시키므로 == 동작이 인스턴스에 위임됨!

 

Adapter 패턴은

기존 class를 수정하지않고도, 필요한 클래스를 만들때 사용함

메소드의 프로토타입만 알면 어댑터 패턴을 적용할 수 있음

(프로토타입:이름,인자개수,인자형,반환형 등)

구버전,신버전 구분할때도 사용 (ver1.0<->2.0 adapter)

 

상속 vs 위임

위임은 인스턴스에 역할을 맡김.

상속은 상위클래스 내부 동작을 자세히 모르면 효과적으로 사용하기 어렵

'복습 > 소프트웨어디자인패턴' 카테고리의 다른 글

Singleton 패턴  (0) 2026.04.17
Factory Method 패턴  (1) 2026.04.17
Template Method 패턴  (0) 2026.04.17
Iterator 패턴  (0) 2026.04.17
디자인패턴 (기초,uml)  (0) 2026.04.17
'복습/소프트웨어디자인패턴' 카테고리의 다른 글
  • Factory Method 패턴
  • Template Method 패턴
  • Iterator 패턴
  • 디자인패턴 (기초,uml)
hyeumm.dev
hyeumm.dev
말하는 감자입니다. 많이 응원해주세요..^^
  • hyeumm.dev
    천방지축 개발자 되기 프로젝트
    hyeumm.dev
  • 전체
    오늘
    어제
    • 아무개 (78)
      • 복습 (41)
        • 알고리즘 (3)
        • 소프트웨어디자인패턴 (8)
        • 네트워크 (3)
        • 자료구조 (1)
        • C++ (1)
        • 서구실 (6)
        • 멋쟁이사자처럼 (3)
        • SOPT (7)
        • 소분설 (6)
        • 운영체제 (3)
      • 회고 (2)
        • UMC (0)
      • 프로그래밍 (19)
        • 안드로이드 (15)
        • 백준 (0)
        • 파이썬 기초 (0)
        • kotlin in action (3)
        • 테스트 코드 (1)
      • 디자인 (7)
      • 기획 (3)
        • 서비스 리뷰 (1)
        • IT 알쓸신잡 (2)
      • 대외활동 (5)
        • 네이버 클라우드 캠프 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네이버클라우드
    IT동아리
    서류
    네클캠
    KDT
    국비교육
    비트캠프강남
    네이버클라우드캠프서포터즈
    솝트
    네이버클라우드캠프
    #네이버클라우드캠프
    에이아이팜
    멋쟁이사자처럼
    해커톤
    발대식
    4호선톤
    hyperclovax
    sopt
    ncamp서포터즈
    PM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyeumm.dev
Adapter 패턴
상단으로

티스토리툴바