LinkedIn

프록시패턴을 사용하는 이유

2020. 11. 7. 17:26 | 자바 개발자되기

프록시패턴

  • 프록시는 클라이언트가 요청 한 처리를 담당하는 리얼 서브젝트를 대신 호출해주는 대리인 역할

예) 클라이언트는 입금을 하고자 한다.
입금을 담당하는 서비스 A를 직접 호출하는 것이 아닌 프록시 A를 호출하고, 프록시 A에서는 리얼 서브젝트인 서비스 A의 입금 행위를 호출

더보기

클라이언트 → 프록시 →리얼 서브젝트

 

귀찮게 중간에 프록시를 위치시키는 이유는 무엇일까?

예를 들어 입금 행위 전/후에 로그를 기록하는 행위가 존재한다면 프록시가 존재하지 않을 경우 일반적으로 입금 행위 내 로그를 기록하는 처리가 포함되어 수정이 발생할 것이다.

 

그러나 로그를 출력하는 행위와 입금처리를 하는 행위는 엄연히 다른 역할(Role)이기에 SOILD 원칙 중 SRP(Single Responsibility Principle) 에 위반된다.

 

또한 입금 외 추가 요구사항이 발생하더라도 프록시 패턴을 사용하면 리얼 서브젝트는 영향을 받지 않는 유연한 설계를 진행 할 수 있다.