개념 공부/SW 공학

Adapter 패턴 & Proxy 패턴

배3 2025. 12. 3. 17:25

Adapter 패턴

비슷한 기능/구성이지만 명칭(인터페이스)이 다를 때, 그 중간에 어댑터를 두어 통역가 역할을 한다.

 

예를 들어, 단순 출력 기능의 print 함수가 있고, 역할은 같지만 다른 버전의 oldprint 함수가 있다.

print만 써도 oldprint/print 상관없이 동작시키고 싶다면?

# 문제 상황

일반적으로 클래스/인터페이스를 구현한다면, print 함수에 대해 하위 클래스에서 재정의하고 같은 이름으로 호출할 수 있지만, oldprint는 그럴 수 없다.

# 해결

print 함수를 사용해도, 그 내부에서 oldprint를 호출하는 Adapter를 선언함으로써, 사용자는 print만 써도 print / oldprint 상관없이 사용할 수 있게 된다.

# 문제 상황

Adapter를 사용하지 않고 oldprint에서 직접 print를 호출하는 형태는 다음 상황에서 힘들어질 수 있다. print 함수의 명칭이 바뀐다면, oldprint를 사용한 곳 모두 찾아서 바꿔줘야 한다.

# 해결

Adapter를 사용하면, Adapter 내부에 선언된 것만 바꿔주면 되므로, oldprint를 많이 사용할수록 효과는 더 커진다.

Proxy 패턴

대리인 역할.

여러 가지 이유로, 직접 접근을 하지 못하게 만들 때 사용.

A → Z 로 한 번에 갈 거를 A   proxy   Z 로 구성한다.

 

단순히 생각하면, 괜히 한 단계 더 거쳐가므로 불필요해보이고 성능 저하로 생각된다.

그렇기에 목적(보안 등)이 있을 때 사용한다.