특정 객체에 대한 접근을 제어하기 위해 대리 객체(Proxy)를 사용하는 구조적 디자인 패턴
추가적인 로직이 필요한 경우나 접근을 제한 또는 지연시키고 싶을 때 사용합니다.
장점과 단점
장점
- 지연 초기화 (자원 절약)
- 접근 제어 (보안, 사용권한 관리)
- 쉬운 추가 기능 적용 (로깅, 캐싱)
단점
- 코드 복잡도 증가 (유지보수 비용▲)
- 응답 시간 지연 발생
코드 예시
//도어맨 대신 "안녕"이라는 말을 해주는 대행역할: Doormanproxy
public class Doormanproxy {
private Doorman doorman;
// *****중요
public Doormanproxy(Doorman doorman) {
this.doorman = doorman;
}
public void 쫒아내(Animal animal) {
hello();
doorman.쫒아내(animal);
//doorman 클래스, 매서드는 건드리지 않은 상태 + 인사를 건내는 역할도 안 준 상태
}
//Doormanproxy 의 역할을 하는 메서드
private void hello() {
System.out.println("안녕");
}
--------------------------------------
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
Doormanproxy proxy = new Doormanproxy(doorman);
Cat cat = new Cat();
Mouse mouse = new Mouse();
proxy.쫒아내(cat);
}
Share article