Java | Proxy Pattern

DoItDev·2021년 11월 6일
0
post-thumbnail

Proxy Pattern

Note:

  • 컴퓨터 프로그래밍에서 소프트웨어의 디자인 패턴 중 하나 이다.
  • 일반적으로 프록시는 다르 무언가와 이어지는 인터페이스 역할을 하는 클래스
  • 프록시 패턴의 예제로는 참조 횟수 스마트 포인터 객체이다.
  • 프록시 패턴의 큰 특징으로는 흐름만 제어를 할뿐 결과값을 조작하거나 변경하면 안된다.
  • 다른 객체에 대한 접근을 제어하거나 가상으로 객체를 만들어 실제 요청이 있을때만 높은 비용의 처리를 할 수 있게 실제 필요한 객체를 프록시 객체로 한번 감싸서 사용하는 패턴

아래의 다이어그램을 보면 이해하기 쉽다

다이어그램의 흐름도로 설명을 하면 본 인터페이스에 메소드를 정의를 해준다.

그리고 Proxy Class 에 Real Class 를 전역 변수로 만들어준 후

Proxy Class 에서 Real Class 를 호출을 해준다.

Untitled Diagram drawio

public interface Item {
    void getByItem();
}

다이어 그램을 보면 Item 인터페이스를 만들어준다.

사용할 getByItem 메소드를 만들어준다.

후에 item 인터페이스를 proxy-item, real-item 클래스에 상속을 받아준다.

public class ProxyItem implements Item {

    private Item item;

    @Override
    public void getByItem() {

        if (null == item) {
            item = new RealItem();
        }

        item.getByItem();
    }

}

public class RealItem implements Item {

    @Override
    public void getByItem() {
        System.out.println(">>>>>>>>>>>>>>>>>>> real proxy value");
    }

}

그리고 상속 받은후에 getByItem 을 오버라이드해준다.
(부모에서 정의되어 있는 메소드를 재정의 해준다)

여기서 proxy 클래스에서는 진짜로 호출될 클래스를 전역변수로 만들어서 사용을 한다.

그리고 proxy 클래스에서 호출되는 것은 real 클래스에서 호출되는 것이다

흐름을 제어하기 위해 클래스 안에 클래스를 넣어서 흐름을 제어하는 방식이라고 생각하면 된다

public class Main {

    public static void main(String[] args) {
        Item item = new ProxyItem();
        item.getByItem();
    }

}

main 클래스에서 호출을 할때는 proxy 를 item에 주입 시켜주면 된다.

스크린샷 2021-11-06 오전 11 59 41
profile
Back-End Engineer

0개의 댓글