- Today
- Total
작심삼일
15주차. Proxy 본문
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다.
틀린 부분은 알려주시면 감사하겠습니다.
어떤 패턴인가
다른 객체에 대한 접근을 제어하기 위한 대리자 또는 자리채움자 역할을 하는 객체를 둡니다.
Remote proxy: 객체가 다른 주소 공간에 존재한다는 사실을 숨길 수 있습니다.
Virtual proxy: 요구에 따라 객체를 생성하는 등 처리를 최적화할 수 있습니다.
Protection proxy & Smart reference: 객체가 접근할 때마다 추가 관리를 책임집니다.
객체를 생성할 것인지 삭제할 것인지를 관리합니다.
어떻게 쓰는가
Proxy: 실제로 참조할 대상에 대한 참조자를 관리합니다.
Subject와 동일한 인터페이스를 제공하여 실제 대상을 대체할 수 있어야 합니다.
실제 대상에 대한 접근을 제어하고 실제 대상의 생성과 삭제를 책임집니다.
Proxy의 종류에 따라서 다음을 수행합니다.
- Remote proxy: 요청 메시지와 인자를 인코딩하여 이를 다른 주소 공간에 있는 실제 대상에게 전달
- Virtual proxy: 실제 대상에 대한 추가적인 정보를 보유하여 실제 접근을 지연할 수 있도록 해야 함
- Protection proxy: 요청한 대상이 실제 요청할 수 있는 권한이 있는 지 확인
Subject: RealSubject와 Proxy에 공통적인 인터페이스를 정의하여,
RealSubject가 요청되는 곳에 Proxy를 사용할 수 있게 합니다.
RealSubject: 프록시가 대표하는 실제 객체입니다.
어디서 활용되는가
이는 책의 내용 (p. 281)을 그대로 가져왔다.
1. Remote proxy: 서로 다른 주소 공간에 존재하는 객체를 가리키는 대표 객체로, 로컬 환경에 위치합니다.
2. Virtual proxy: 요청이 있을 때만 필요한 고비용 객체를 생성합니다.
3. Protection proxy: 원래 객체에 대한 실제 접근을 제어합니다.
이는 객체별로 접근 제어 권한이 다를 때 유용하게 사용할 수 있습니다.
4. Smart reference: 원시 포인터의 대체용 객체로, 실제 객체에 접근이 일어날 때 추가적인 행동을 수행합니다.
My Opinion
책에 '포인터'라고 설명되어있던 부분이 있었다. 포인터라고 생각을 하니까 이해가 쉬웠다.
메모리를 많이 잡지 않거나 사용자로부터 내부를 보호하고 싶을 때 사용할 것 같다.
'스터디 > 디자인 패턴' 카테고리의 다른 글
14주차-2. Bridge (0) | 2021.09.23 |
---|---|
14주차-1. Observer (0) | 2021.09.23 |
13주차. Mediator (0) | 2021.09.09 |
12주차. Facade (0) | 2021.08.18 |
11주차. Builder (0) | 2021.08.11 |