본문 바로가기

Development/Spring Framework

스프링 디자인패턴(1) 어댑터 패턴 - Adapter Pattern

디자인패턴 (Design Pattern)

  • 객체 지향 특성과 설계 원칙을 기반으로 구성됨
  • 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하며 만들어진 해결책 중 많은 이들이 인정한 방식으로 정리한 것

어댑터 패턴 (Adapter Pattern)

 

어댑터를 직역하자면 변환기이며, 이 패턴 또한 마찬가지로 서로 다른 두 인터페이스 사이 통신이 가능하게 한 것이다. 즉, 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 전환한 것이다. 고로 어댑터 패턴을 이용하면 호환성 문제로 같이 쓸 수 없는 클래스를 연결해서 사용할 수 있다.

 

대표적인 예시로 ODBC와 JDBC, JVM이 존재한다. 어댑터 패턴 또한 확장에는 열려있으나, 변경에는 닫혀있어 SOLID 원칙 중 OCP을 따른다고 보면 된다.

 

현재 학습하는 책에서의 Adapter pattern 예제는 다음과 같다.

 

 

 

 

클라이언트는 어댑터를 통해 Service 클래스 객체에 접근할 수 있다.

즉, 클라이언트랑 구현된 인터페이스를 분리시킬 수 있으며, 향후 인터페이스가 변경되어도 변경내역은 어댑터에 캡슐화 되어 클라이언트는 변경될 필요가 없다.

 

이는 Class로 구현했기에 '어댑터 패턴' 정의에 맞추어 새로 코드를 작성해보겠다. 

 

 


 

 

 

어댑터 패턴 장점

 

  1. 자바는 다중상속을 지원하지 않는다. 어댑터 패턴을 사용하면 상속받지 않는 인터페이스에 접근할 수 있다.
    즉, 호환성 문제를 해결할 수 있다.

  2. 클래스 재사용성이 증가한다.

++ 어댑터 패턴 적용 예시를 정말 잘 보여주는 글을 발견!

gdtbgl93.tistory.com/141