[디자인 패턴] Adapter 패턴

정태경·2023년 11월 5일
post-thumbnail

Adapter 패턴

어댑터 패턴은 기존의 클래스를 다른 인터페이스에 맞게 변환하는 패턴이다. 이 패턴은 호환성이 없는 인터페이스를 가진 두 클래스를 연결하여 함께 동작할 수 있도록 해준다.

어탭터 패턴은 일반적으로 다음과 같은 구성 요소로 이루어져 있다.

  • Target: 클라이언트가 사용하는 인터페이스를 정의
  • Adaptee: 어댑터가 연결하려는 기존 클래스
  • Adapter: Target 인터페이스를 구현하고, Adaptee를 Target 인터페이스에 맞게 변환

어탭터 패턴은 호환성이 없는 클래스를 연결하여 함께 동작할 수 있게 해주는 유용한 패턴이지만, 몇 가지 제한 사항이 뒤따른다.

  • Adaptee 클래스의 인터페이스가 변경될 경우, Adapter 클래스도 함께 수정해야 한다.
  • Adapter 클래스가 많아질 경우, 코드의 복잡도가 증가할 수 있다.

예제 코드

# Adaptee 클래스
class ExternalAPI:
    def get_data(self):
        return {"name": "taekyeong", "age": 32}


# Target 인터페이스
class InternalAPIInterface:
    def get_name(self):
        pass


# Adapter 클래스
class ExternalAPIAdapter(InternalAPIInterface):
    def __init__(self, external_api: ExternalAPI):
        self.external_api = external_api

    def get_name(self):
        data = self.external_api.get_data()
        return data["name"]


# 클라이언트 코드
external_api = ExternalAPI()
adapter = ExternalAPIAdapter(external_api)
name = adapter.get_name()
print(name)  # "taekyeong"

profile
두나무 업비트 QA 엔지니어

0개의 댓글