728x90

 

"흐름제어" 동기적인 처리를 최대한 비동기적으로 처리하기 위함

프록시란?

'대리인'으로 무언가를 대신 처리하는 의미

객체를 직접 참조하는 것이 아닌, 해당 객체를 대행하는 객체를 통해 대상 객체에 접근

▷ 객체가 메모리에 존재하지 않아도 기본적이 정보 참조, 설정 가능

실제 객체의 기능이 반드시 필요한 시점까지 객체 생성 미루기 가능

프록시 검색 시, 가장 흔한 구조

프록시 사용 대표 3가지

1. 가상 프록시 virtual proxy

   필요 시점까지 객체 생성을 연기하며, 객체가 생성된 것처럼 동작

   - 프록시 클래스 : 자잘한 작업

   - 주체 클래스 : 많은 리소스 요구 작업

2. 원격 프록시 remote proxy

   서로 다른 주소 공간에 있는 객체에 대해 마치 같은 주소 공간에 있는 것처럼 동작

3. 보호 프록시 protection proxy

   객체애 대한 접근 권한을 제어 / 객체마다 접근 권한 달리 사용

 

프록시 패턴의 장단점

장점 단점
- 큰 사이즈 객체가 로딩되기 전, 프록시를 통해 참조 가능

- 실제 객체의 public, protected 메소드를 숨기고, 인터페이스를 노출

- 로컬에 떨어진 객체 사용 가능

- 객체 접근 사전 처리 가능

- 인터페이스를 두기에 구현체에 영향을 받지 않음

- 우회하여 접근(흐름 제어)
- 객체 생성 전 단계로, 빈번한 객체 생성의 경우 성능 저하

- 프록시 내부에서 객체 생성을 위한 스레드 생성, 동기화가 구현되야 할 경우 성능 저하

- 로직이 난해하여 가독성 떨어짐

# 참고 사이트

- https://coding-factory.tistory.com/711

- https://jdm.kr/blog/235

- https://esoongan.tistory.com/180

728x90

'IT > Design Pattern' 카테고리의 다른 글

[디자인 패턴] 기본 개념  (0) 2021.10.04
[디자인 패턴] 빌더(Builder)  (0) 2021.10.02
[디자인 패턴] 추상 팩토리(Abstract Factory)  (0) 2021.09.27

+ Recent posts