어댑터 패턴은 기존 코드를 수정하지 않고도 새로운 시스템에 적용할 수 있게 해주는 구조 패턴입니다.
어댑터 패턴은 기존 클래스의 인터페이스를 변경하지 않고도 그 클래스가 다른 인터페이스를 가진 클래스와 협업할 수 있게 해주는 구조 패턴입니다.
스프링 MVC에서는 이를 통해 다양한 종류의 컨트롤러를 하나의 인터페이스로 통합하여 관리할 수 있습니다.
Old 인터페이스를 구현한 핸들러 o & New 인터페이스를 사용하는 새 시스템
이 있다고 해보자.
핸들러 o 에 맞는 어댑터에서 New 인터페이스를 구현하고, o의 메소드를 실행할 수 있는 메소드를 만든다.
그러면 o 의 기존 코드를 수정하지 않고도, 어댑터를 통해 New 인터페이스를 사용하는 로직에서 o의 메소드를 실행할 수 있다.
인터페이스로 딱 맞게 떨어지면 어댑터가 필요하지 않는데, 인터페이스로 딱 맞아 떨어지지 않을 때 어댑터 패턴으로 끼워 맞출 수 있습니다.
새 시스템에서는 동그라미만 사용하는데, 내 핸들러는 세모를 사용한다면?
-> 어댑터가 세모와 동그라미를 접합시키는 말그대로 '어댑터'의 역할을 하는것임.
예를 들어서 외부 라이브러리를 사용하는데, 해당 라이브러리가 우리쪽 기준과 맞지 않을 때 어댑터를 통해서 우리쪽 기준에 맞도록 맞출 수 있습니다.
중간에 어댑터가 복잡한 역할을 대신 해주는 것이지요.
쉽게 설명드리자면 인터페이스가 220V에 맞는 전원 코드라고 한다면 서로 인터페이스를 맞추기 때문에 국내에서는 아무런 문제 없이 전기를 사용할 수 있습니다. 그런데 해외 제품을 구매하거나 해외에 나가면 110V 제품이 존재하는데요. 이 경우에는 중간에 전원 어댑터(돼지코 등이 떠오르네요)를 사용해서 문제를 해결할 수 있습니다.
이런 패턴은 정해진 용도가 딱 있다기 보다는 실무에서는 이렇게 잘 맞지 않은 경우에 어댑터를 사용해서 문제를 해결할 수 있습니다.
'Spring' 카테고리의 다른 글
@NotNull과 nullable = false, 뭐가 다를까? ✍️ (1) | 2025.02.28 |
---|---|
AOP: 횡단관심사와 애스펙트 (0) | 2024.07.17 |
스프링 MVC 요청 / 응답 흐름과 매핑 로직 (0) | 2024.07.04 |
HttpHeaders, HttpEntity, ResponseEntity, RequestEntity (0) | 2024.06.18 |
스프링 부트 자동 설정 (AutoConfiguration.imports) 과 DispatcherServlet (0) | 2024.05.23 |
서블릿에서 JSP, 이어서 MVC 패턴이 사용되기까지 (0) | 2024.05.20 |