Proxy Pattern
Proxy : 대리인
오브젝트(객체) 지향에서는 본인도 대리인도 오브젝트(객체)가 됩니다 바빠서 일을 할 수 없는 본인 오브젝트 대신에 대리인 오브젝트가 어느 정도 일을 처리하게 됩니다.
오브젝트(객체) 지향에서는 본인도 대리인도 오브젝트(객체)가 됩니다 바빠서 일을 할 수 없는 본인 오브젝트 대신에 대리인 오브젝트가 어느 정도 일을 처리하게 됩니다.
예제 프로그램
이름 있는 프린터
Main클래스는 PrinterProxy클래스의 인스턴스를 생성
그 인스턴스에 Alice라는 이름을 붙이고 그 이름을 표시
그후 Bob 이라는 이름을 변경해서 그 이름을 표시
(이름의 설정과 취득에서는 아직 실제 Printer 클래스의 인스턴스는 생성되지 않았습니다.)
이름의 설정과 취득 부분은 PrinterProxy 클래스가 대리로 실행
마지막에 print 메소드를 호출해서,
실제로 프린터를 실행하는 단계가 되어서야 비로서 PrinterProxy 클래스는 Printer 클래스의 인스턴스를 생성



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 클래스

: 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 언어로 배우는 디자인 패턴 입문
ProxyPattern.alz
0 개의 댓글:
댓글 쓰기