[디자인 패턴] 2 프록시 패턴(Proxy Pattern)

류재성's avatar
May 27, 2024
[디자인 패턴] 2 프록시 패턴(Proxy Pattern)
 

1. 프록시(Proxy Pattern) 패턴이란?

 
💡
프록시 패턴(Proxy Pattern)은 다른 객체에 대한 접근을 제어하기 위해 그 객체의 대리자 또는 자리보유자를 제공하는 패턴이다. 프록시 패턴을 사용하면 실제 객체에 대한 직접적인 접근을 제한하거나 제어할 수 있으며, 다양한 상황에서 유용하게 사용할 수 있다.
 
 
notion image
 
전략 패턴에서 사용했던 코드에 지갑 검사라는 기능이 추가되어야 한다.
이때 문지기에 기능을 추가해도 되지만 이렇게되면 기존 코드가 수정되야 한다.
 
notion image
이때 대리인(프록시)을 만들어 추가될 기능을 수행할 수 있도록 만든다.
 

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
RSSPowered by inblog