상세 컨텐츠

본문 제목

Proxy Pattern 배워보기

Java

by techbard 2014. 1. 22. 17:45

본문

반응형

프록시 패턴은 인터페이스 역할을 하는 클래스라고 한다. 실제로는 다른 원본 클래스를 불러주는 역할을 하는데 핵심은 Proxy 역할을 하는 클래스만 호출해도 원본 클래스를 호출해 주고, 이미 원본 클래스가 존재한다면 원본 클래스의 메소드를 건너뛰고 Proxy 클래스에 있는 메소드만 호출하게 된다.

 

1. 먼저 언제나 그렇듯 각 클래스들의 관계를 설정하기 위해서 (= 묶어주기 위해서, 공통 타입으로 객체변수 설정하기 위해서) 인터페이스를 작성한다.

 

 

2. 실제 일을 담당할 클래스를 작성한다.

 

 

먼저 인터페이스에서 구현을 지시한 메소드를 구현하고 생성자에서 무조건 실행할 메소드를 추가한다.

시나리오상 이미지 파일을 읽어 로딩 메시지를 뿌리고 화면에 그리는 메소드가 순서대로 실행될 텐데, 이 원본 객체가 이미 존재한다면 화면에 그리는 메소드만 호출하게 된다.

 

3. Proxy 클래스를 작성한다.

 

 

Proxy 클래스가 원본 클래스에게 일을 시켜야 하므로 생성자 시그니쳐는 같다. 12-14번 라인까지가 핵심적인 부분으로

 

a. 원본 객체가 이미 실행된 적이 있다면 (= iDisplayAPI가 null이 아니라면), displayImage() 메소드만 실행되고

 

b. 원본 객체가 한 번도 실행되지 않았다면 (= iDisplayAPI에 객체변수가 들어가 있다면), DisplayAPI 객체를 생성해서 displayLoadingMsg() 메소드를 실행한 후 if 문을 나와 다시 displayImage() 메소드가 수행된다.

 

4. 이제 테스트 클래스로 확인해 보자.

 

 

 

결과:

 

Loading... Image1.png
Displaying... Image1.png
Displaying... Image1.png
Loading... Image2.png
Displaying... Image2.png

 

결과는 ProxyAPI만 호출했는데도 알아서 "Loading..." 과 "Displaying..."이 출력된다. 또, 다시 한 번 ProxyAPI를 호출하면 이번에는 "Loading..." 을 건너뛰고 "Displaying..."만 출력된다.

 

ProxyPattern.zip

 

 

 

반응형

관련글 더보기

댓글 영역