inblog logo
|
하쎄의 기술 일기장
    Design Pattern

    3. 프록시 패턴(Proxy Pattern)

    [IntelliJ] 프록시 패턴 사용 방법과 이해
    하세연's avatar
    하세연
    Aug 13, 2024
    3. 프록시 패턴(Proxy Pattern)
    Contents
    예제)
    💡
    프록시 패턴(Proxy Pattern)은 객체의 접근을 제어하기 위해 사용되는 디자인 패턴 중 하나입니다. 이 패턴에서는 실제 객체(Real Subject)에 대한 접근을 제어하는 대리 객체(Proxy)를 만들어, 클라이언트가 직접 실제 객체에 접근하는 대신 대리 객체를 통해 접근하도록 합니다.
    notion image
    중국에서는 유튜브를 사용하지 못한다. 그림과 같이 중국에서 Forward Proxy에서 나가지 못하도록 막기 때문이다. 이 때문에 인도나 다른 국가들로 IP를 돌려 사용할려고 할 때, 유튜브 앞에 있는 Reverse Proxy에서 막을 수 있다. 이처럼 Proxy는 문지기 같은 역할을 한다.

    예제)

    public class App { public static void main(String[] args) { Mouse m1 = new Mouse(); Tiger t1 = new Tiger(); Doorman d1 = new Doorman(); d1.쫓아내(t1); } } public abstract class Animal { public abstract String getName(); } public class Mouse extends Animal { private String name ="쥐"; public String getName() { return name; } } public class Tiger extends Animal { private String name ="호랑이"; public String getName() { return name; } } public class Doorman { // 쥐 출입금지 public void 쫓아내(Animal m){ System.out.println(m.getName()+"쫓아내"); } }
    위와 같이 Doorman이 동물과 관련된 객체는 “쫓아내”라는 메서드를 이행하도록 코드를 작성했다.
    기존 코드를 건들지 않고 “쫓아내”메서드 앞에 “안녕~~”이라는 문구가 뜨도록 코드를 추가하고 싶을 때, Proxy 패턴을 이용할 수 있다.
     
    public class DoormanProxy { private Doorman doorman; public DoormanProxy(Doorman doorman) { this.doorman = doorman; } public void 쫓아내(Animal a){ System.out.println("안녕~~"); doorman.쫓아내(a); } } public class App { public static void main(String[] args) { Mouse m = new Mouse(); DoormanProxy doormanProxy = new DoormanProxy(new Doorman()); doormanProxy.쫓아내(m); } }
    1. 먼저 DoormanProxy 라는 클래스를 추가하여 “쫓아내” 라는 메서드 앞에서 “안녕~~”이라는 문구를 추가하였다.
    1. 이를 main에서 DoormanProxy가 new로 생성되면서 기존의 Doorman을 받아 이어지도록 연결하였다.
    이렇게 클래스를 추가하고 코드를 크게 수정하지 않고 원하는 메서드나 객체를 추가할 수 있도록 하는것이 Proxy 패턴이다.
    Share article

    하쎄의 기술 일기장

    RSS·Powered by Inblog