[GoF] Adapter 패턴 : 사이에 끼워 재사용한다(1) [제공된 것과 필요한 것 사이의 차이를 메워주는 패턴]

2023. 8. 23. 13:30·◈ Study/디자인패턴(GoF)🥞
728x90

- Adapter 패턴 : 사이에 끼워 재사용한다

Adapter 패턴은 제공된 것과 필요한 것 사이에 들어가서 그 차이를 메워주는, 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴이다. Wrapper 패턴이라고도 불린다.

Adapter 패턴 / 참고자료 : https://refactoring.guru/ko/design-patterns/adapter

- 어떤 경우에 사용할까?

Adapter 패턴은 기존 클래스에 한겹 덧씌어 필요한 클래스를 만든다.

즉, 기존 클래스는 충분히 테스트되어 버그가 없는 것을 알기에 Adapter 역의 클래스를 중점적으로 살펴보면 프로그램 검사가 매우 편해진다. 새로운 인터페이스(API)에 맞추기 위해 기존 클래스의 소스를 수정하게 된다면, 기존 클래스 또한 다시 테스트 해야 한다.


소프트웨어 버전 업에도 유용하게 사용된다. Adapter 패턴을 사용하면, 신버전과 구버전을 공존시키고 유지 보수까지 편하게 할 수 있다.

소프트웨어 버전 업에 Adapter 패턴 적용 / 참고자료 : JAVA 언어로 배우는 디자인 패턴 입문


- Adapter 패턴과 상속, 위임

Adapter 패턴은 상속과 위임, 두 가지 방법으로 구현할 수 있다.
두 가지 모두 구현해볼 예정이지만, 많은 개발자들이 상속 보다는 위임을 사용하는 걸 제안한다.
 

[JAVA] Java 개발에서 상속(Inheritance)보다 위임(Delegation)을 제안하는 이유는? [상속 구조보다 위임을

- 상속 구조보다 위임을 활용한 개발을 제안하는 이유 1. 상속(Inheritance)이란? 부모 클래스의 특성(메서드와 속성)을 자식 클래스가 물려받는 기법이다. (클래스 사이의 관계) 자식 클래스는 부모

yermi.tistory.com


- Adapter 패턴 예제 코드

 

[GoF] Adapter 패턴 : 사이에 끼워 재사용한다(2) [상속을 사용한 패턴, 위임을 사용한 패턴]

2023.08.23 - [◈ Study/디자인패턴(GoF Design)🥞] - [GoF] Adapter 패턴 : 사이에 끼워 재사용한다(1) [제공된 것과 필요한 것 사이의 차이를 메워주는 패턴] - Adapter 패턴 : 상속을 사용한 패턴, 위임을 사용

yermi.tistory.com

 

참고문헌 : 유키 히로시 저/김성훈 역(2022), JAVA 언어로 배우는 디자인 패턴 입문, 영진닷컴

참고자료 : https://refactoring.guru/ko/design-patterns/adapter


728x90
'◈ Study/디자인패턴(GoF)🥞' 카테고리의 다른 글
  • [GoF] Factory Method 패턴 : 하위 클래스에서 인스턴스를 만든다 [인스턴스 생성을 위한 뼈대와 생성을 나누는 패턴]
  • [GoF] Template Method 패턴 : 하위 클래스에서 구체적으로 처리한다 [상위 클래스에서 뼈대를, 하위 클래스에서 내용을 결정하는 패턴]
  • [GoF] Adapter 패턴 : 사이에 끼워 재사용한다(2) [상속을 사용한 패턴, 위임을 사용한 패턴]
  • [GoF] Iterator 패턴 : 처리를 반복한다 [전체를 검색하고 처리를 반복하는 패턴]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    코딩
    백준
    Oracle
    spring
    코딩 테스트
    일상
    CSS
    jsp
    Project
    BOJ
    꿀팁
    html
    Error Note
    Database
    javascript
    Java
    백준 티어
    SQL
    프로그래밍
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[GoF] Adapter 패턴 : 사이에 끼워 재사용한다(1) [제공된 것과 필요한 것 사이의 차이를 메워주는 패턴]
상단으로

티스토리툴바