Proxy Pattern
프록시 패턴
Last updated
프록시 패턴
Last updated
원본 객체를 대리하여 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴입니다. 대상 객체의 메서드를 직접 실행하는 것이 아닌, 대상 객체에 접근하기 전에 프록시(Proxy) 객체의 메서드를 접근한 후 추가적인 로직을 먼저 처리한 뒤 대상 객체에 접근합니다.
대상 클래스가 민감한 정보를 가지고 있거나, 인스턴스화 하기에 무겁거나, 추가 기능을 가미하고 싶은데, 원본 객체를 수정할 수 없는 상황일 때를 극복하기 위해 사용됩니다.
보안 (보호 프록시)
캐싱: 내부에 캐시를 유지하여 캐시미스가 나는 경우에만 대상 객체 접근 (캐싱 프록시)
데이터 유효성 검사:
지연 초기화: 대상 객체의 생성 비용이 비쌀때 (가상 프록시)
로깅 (로깅 프록시)
원격 객체: 원격 위치에 있는 객체를 가져와서 로컬 처럼 보이게 할 수 있습니다. (원격 프록시)
다른 객체에 대한 접근을 제어하는 개체.
Subject: Proxy와 RealSubject를 하나로 묶는 인터페이스 (다형성)
RealSubject: 대상 객체
Proxy: 대상 객체 대리자
OCP 준수: 변경에 닫혀있고 확장에 열려있습니다.
SRP 준수: 대상 객체는 본인의 기능에만 집중할 수 있고, 부가 기능은 프록시 객체가 처리합니다
코드의 복잡성
추상 레이어가 하나 추가되어서 성능저하가 생길 수 있습니다.