proxy-pattern

프록시 패턴

프록시 패턴이랑 원본 클래스르르 변경하지 않은 상태로 프록시 클래스를 토입하여, 원본 클래스와 관련 없는 새로운 기능을 추가하는 것이다.

왜 프록시 패턴을 사용하는가?

  1. 비즈니스 코드 즉 원래 클래스의 코드와 그 부가적인 코드를 침범해 밀접하게 결합하고 있어서, 비즈니스 코드의 클래스를 교체해야 한다면 교체 비용이 많이 들것이기 때문이다.
  2. 원래 클래스 코드와 부가적인 코드는 관련이 없기에 원래 클래스가 부가 코드가 있는 것이 설계 오류이다.

프록시의 방식

  • 인터페이스 방식
    • 원본 클래스와 동일한 인터페이스를 가지는 인터페이스를 생성
    • 그 인터페이스를 구현하는 Proxy 클래스 구현
  • 상속 기반 방식
    • 원본 클래스를 상속하는 Proxy 클래스를 구현

동적 프록시

  • 위 프록시 방식의 문제
    • 원본 클래스마다 프록시 클래스를 만들어야하고, 각 메서드에 유사한 코드 논리를 첨부해야한다.
    • 문제를 해결하기 위핸 Reflection 기반의 동적 프록시를 만들어야한다.
  • 적용
    • 모니터링
    • 멱등성 같은 비즈니스와 관련 없는 요구 사항
    • RPC
    • 캐싱