티스토리 뷰
728x90
반응형
프록시 패턴이란?
- 프록시는 대리인이라는 뜻으로, 무언가를 대신 처리하는 역할을 담당합니다. 어떠한 객체를 사용하고자 할때 객체를 직접적으로 참조 하는것이 아니라 해당 객체를 대행(proxy)하는 객체를 통해 대상 객체에 접근하는 방식입니다.
- 이렇게 접근을 하면 접근하고자 하는 객체가 메모리상에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 필요한 시점까지 객체의 생성을 지연시킬 수 있습니다.
클래스 다이어그램
Subject
- Proxy와 RealSubject가 구현해야하는 인터페이스
- 두 객체를 동일하게 다루기 위해서 존재
Proxy
- RealSubject와 Client 요청 사이에 존재하는 객체
- Subject를 구현함으로써 클라이언트는 RealSubject를 사용하는 것과 차이가 없어야한다.
RealSubject
- 실질적으로 요청에 대해 주된 기능을 수행하는 객체
- Proxy 객체는 내부적으로 RealSubject 객체를 로직에 맞게 사용한다.(위임)
예제
Subject 역할을 하는 인터페이스
public interface MailSender {
String send(String message);
}
RealSubject 역할을 하는 클래스
public class RealMailSender implements MailSender {
@Override
public String send(String message) {
return message;
}
}
Proxy 역할을 하는 클래스
public class ProxyMailSender implements MailSender {
private RealMailSender realMailSender;
@Override
public String send(String message) {
if (realMailSender == null) {
realMailSender = new RealMailSender();
}
return realMailSender.send(message);
}
}
클라이언트
public class Client {
public static void main(String[] args) throws Exception{
MailSender mailSender = new ProxyMailSender();
System.out.println(mailSender.send("안녕하세요."));
}
}
장점
- 기본 객체의 리소스가 무거운 경우, 프록시 객체에서 간단한 처리를 하거나 기본 객체를 캐싱 처리함으로써 부하를 줄일 수 있습니다.
- 프록시는 기본 객체와 요청 사이에 있기 때문에, 일종의 방패(보안)의 역할도 합니다.
단점
- 캐싱이 안되어 있는 초기 사용의 경우 프록시 객체가 중간에 껴있기 때문에, 간혹 응답이 느려질 수 있습니다.
728x90
반응형
'JAVA > Design_Pattern' 카테고리의 다른 글
[Design_Pattern] 추상 팩토리 패턴 (0) | 2022.07.28 |
---|---|
[Design_Pattern] 팩토리 메서드 패턴 (0) | 2022.07.27 |
[Design_Pattern] 파사드 패턴 (1) | 2022.03.13 |
[Design_Pattern] 데코레이터 패턴 (0) | 2022.03.11 |
[Design_Pattern] 컴포지트 패턴 (0) | 2022.03.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- pipe and filter architecture
- 공간 기반 아키텍처
- spring boot 엑셀 다운로드
- spring boot poi excel download
- 서비스 기반 아키텍처
- java ThreadLocal
- @ControllerAdvice
- 트랜잭셔널 아웃박스 패턴 스프링부트
- 레이어드 아키텍처란
- redis sorted set으로 대기열 구현
- service based architecture
- polling publisher spring boot
- microkernel architecture
- spring boot redisson sorted set
- JDK Dynamic Proxy와 CGLIB의 차이
- space based architecture
- spring boot excel download paging
- transactional outbox pattern spring boot
- spring boot excel download oom
- spring boot redis 대기열 구현
- 자바 백엔드 개발자 추천 도서
- spring boot redisson destributed lock
- 람다 표현식
- transactional outbox pattern
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- pipeline architecture
- redis 대기열 구현
- redis sorted set
- java userThread와 DaemonThread
- spring boot redisson 분산락 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함