Proxy/Reflect는 접근 계약을 명시한다
target은 데이터, handler는 접근 정책, Reflect는 원래 의미를 이어 주는 표준 호출이다. 세 역할이 섞이면 코드가 불투명해진다.
| 역할 | 책임 | 좋은 신호 | 나쁜 신호 |
|---|---|---|---|
| target | 원본 상태 보관 | 직접 노출하지 않음 | 일부 코드는 target, 일부는 proxy 사용 |
| handler | 읽기·쓰기 정책 정의 | trap이 짧고 목적이 명확 | trap이 비즈니스 로직을 모두 품음 |
| Reflect | 기본 동작 호출 | prototype/receiver 의미 유지 | 수동 구현으로 edge case 누락 |
| caller | proxy를 객체처럼 사용 | 실패가 명확히 보임 | 가로채기를 모른 채 의존 |
Proxy 설계의 핵심은 숨기는 것이 아니라 객체 접근 규칙을 독자가 추적 가능한 위치에 두는 것이다.