1. 프록시(Proxy Pattern) 패턴이란?
프록시 패턴(Proxy Pattern)은 다른 객체에 대한 접근을 제어하기 위해 그 객체의 대리자 또는 자리보유자를 제공하는 패턴이다. 프록시 패턴을 사용하면 실제 객체에 대한 직접적인 접근을 제한하거나 제어할 수 있으며, 다양한 상황에서 유용하게 사용할 수 있다.

전략 패턴에서 사용했던 코드에 지갑 검사라는 기능이 추가되어야 한다.
이때 문지기에 기능을 추가해도 되지만 이렇게되면 기존 코드가 수정되야 한다.

이때 대리인(프록시)을 만들어 추가될 기능을 수행할 수 있도록 만든다.
2. 프록시 패턴 적용하기
이전 블로그에서 코드를 확인할 수 있다.
2.1 상속을 활용하기
package ex02;
public class DoormanProxy extends Doorman{
public void 쫓아내(Animal animal){
System.out.println("지갑 검사");
super.쫓아내(animal);
}
}
DoormanProxy 클래스를 만든 후 Doorman 을 상속한다.
Doorman의 메서드를 구현해 지갑 검사 후, 부모 클래스 Doorman 의 메서드를 호출한다.
package ex02;
// 프록시 패턴
public class App {
public static void main(String[] args) {
Animal mouse = new Mouse();
Animal tiger = new Tiger();
DoormanProxy doorman = new DoormanProxy();
doorman.쫓아내(mouse);
}
}
2.2 생성자 활용하기
package ex02;
public class DoormanProxy {
//final 이 있으면 null이 되면 안됨. 반드시 값이 있어야됨
private final Doorman doorman ;
public DoormanProxy(Doorman doorman) {
this.doorman = doorman;
}
public void 쫓아내(Animal animal){
System.out.println("지갑 검사");
doorman.쫓아내(animal);
}
}
DoormanProxy 클래스를 만든 후 Doorman 클래스를 생성자를 통해 변수로 받는다.
package ex02;
// 프록시 패턴
public class App {
public static void main(String[] args) {
Animal mouse = new Mouse();
Animal tiger = new Tiger();
DoormanProxy doorman = new DoormanProxy(new Doorman());
doorman2.쫓아내(mouse);
}
}
호출할 때 매개변수로 Doorman 을 메모리에 띄워 넣는다.
Share article