2009년 12월 4일 금요일

Proxy Pattern

Proxy Pattern

Proxy : 대리인
오브젝트(객체) 지향에서는 본인도 대리인도 오브젝트(객체)가 됩니다 바빠서 일을 할 수 없는 본인 오브젝트 대신에 대리인 오브젝트가 어느 정도 일을 처리하게 됩니다.


예제 프로그램

이름 있는 프린터
Main클래스는 PrinterProxy클래스의 인스턴스를 생성
그 인스턴스에 Alice라는 이름을 붙이고 그 이름을 표시
그후 Bob 이라는 이름을 변경해서 그 이름을 표시
(이름의 설정과 취득에서는 아직 실제 Printer 클래스의 인스턴스는 생성되지 않았습니다.)
이름의 설정과 취득 부분은 PrinterProxy 클래스가 대리로 실행
마지막에 print 메소드를 호출해서,
실제로 프린터를 실행하는 단계가 되어서야 비로서 PrinterProxy 클래스는 Printer 클래스의 인스턴스를 생성

 

Proxy Pattern의 등장인물

Subject(주체)의 역할
: Proxy 역할과 RealSubject 역할을 동일시하기 위한 인터페이스를 결정
  Subject 역할이 있는 덕분에 Client 역할은 Proxy 역할과 RealSubject 역할의 차이를 의식할
  필요가 없습니다.
  예제프로그램에서는 Printable 인터페이스

Proxy(대리인)의 역할
: Proxy의 역할은 Clinet 역할의 요구를할 수 있는 만큼 처리를 합니다. 만약, 자신만으로 처리할 수
  없으면 Proxy 역할은 RealSubject 역할에게 처리를 맡깁니다. Proxy 역할은 정말로 RealSubject
  역할이 필요해지면 그때 RealSubject 역할을 생성합니다. Proxy역할은 Subject 역할에 정해지는
  인터페이스를 구현
  예제프로그램에서는 PrinterProxy

RealSubject(실제의 주체)의 역할
: 대리인인 Proxy 역할에서 감당할 수 없는 일이 발생했을 때 등장하는 것이 본인인 RealSubject
  역할입니다. 이 혁할도 Proxy 역할과 마찬가지로 Subject 역할에서 정해져 있느 인터페이스를 구현
  예제프로그램에서는 Printer 클래스

Clinet(의뢰인)의 역할
: Proxy Pattern을 이용하는 역할
  예제프로그램에서는 Main 클래스


 

출처 : Java 언어로 배우는 디자인 패턴 입문
 

댓글 없음:

댓글 쓰기