어댑터 패턴
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Algorithm
어댑터 패턴(Adapter Pattern)은 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있는 디자인 패턴이다.
이 패턴을 이용하면 인터페이스르 변환해주는 어댑터를 만들어 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있도록 지원해준다. 이렇게 함으로써 클라이언트와 구현된 인터페이스를 분리시킬 수 있으며, 나중에 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화되기 때문에 클라이언트는 바뀔 필요가 없다.
<그림1. 어댑터 패턴 클래스 다이어그램>
어댑터 패턴에는 여러 객체지향 원칙이 반영되어 있다. 어댑티(adaptee)를 새로 바뀐 인터페이스로 감쌀 때는 객체 구성(composition)을 사용한다. 이런 접근법을 쓰면 어댑티의 어떤 서브클래스에 대해서도 어댑터를 쓸 수 있다는 장점이 있다.
그리고 이 패턴에서는 클라이언트를 특정 구현이 아닌 인터페이스에 연결 시킨다. 각각 서로 다른 백엔드 클래스들로 변환시키는 여러 어댑터를 사용할 수도 있다. 이렇게 인터페이스를 기준으로 코딩을 했기 때문에 타겟 인터페이스만 제대로 지킨다면 나중에 다른 구현을 추가한는 것도 가능하다.
클라이언트에서 어댑터를 사용하는 방법
- 클라이언트에서 타겟 인터페이스를 사용하여 메소드를 호출함으로써 어댑터에 요청
- 어댑터에서는 어댑티 인터페이스를 사용하여 그 요청을 어댑티에 대한 하나 이상의 메소드 호출로 변환
- 클라이언트에서는 호출 결과를 받긴 하지만 중간에 어댑터가 껴 있는지는 전혀 알지 못한다.