티스토리 뷰

프록시 패턴

 

 

 

  • 직역하면 프록시는 대리자 라는 의미이다.
  • 프록시와 리얼 서브젝트를 공유하는 인터페이스가 있다.
  • 프록시가 리얼 서브젝트를 참조하고 있다.
  • 정리하면, A라는 인터페이스가 존재하고, 프록시와, 실제구현체 모두 A인터페이스를 참조하고 있다.
  • 그리고 프록시는 내부적으로 실제 구현체를 참조하고 있으며, 클라이언트는 인터페이스를 통해 프록시객체를 이용한다.

프록시 객체를 사용하는 이유 ?

  • SRP (단일책임원칙)
    • 본인이 가진 역할 이외에는 추가가 되면 안된다.
  • 하나의 클래스는 하나의 역할만 해야한다. 다른 역할을 하는것을 추가할땐 해당 클래스가 수정이 되어선 안된다.
  • 로깅 기능을 추가한다던가, 권한 체크 기능을 추가하는 등 의 경우에 리얼 서브젝트를 직접 수정해서 안된다.

다음과 같이 BookService 가 있다고 가정하고, rent 메소드를 사용해서 책을 빌리는 기능이 존재한다.

만약 전후로 로깅을 하는 기능을 추가해야한다면 ? rent 메소드 본래기능이 아닌 다른 기능때문에 수정이 된다.

이런 로직이 자꾸 추가된다면 본래 기능을 잃어버리고 코드가 난잡해지는 원인이 된다.

매번 프록시를 생성하면 비슷한코드 게속 반복되는 문제가 있음.

이를 해결하기 위해 매번 프록시 클래스를 생성하는것이 아니라, 자바 리플랙션을 활용해 런타임시 동적으로 생성한다.

이를 다이나믹프록시라고 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함