매일 하나의 디자인 모드 의 proxy

첫 인상 은 말 그대로 adapter 와 차이 가 별로 없 는 것 같 아 요.
http://www.oodesign.com/proxy-pattern.html
 
예 를 들 어 그림 을 보 는 프로그램 이 있 으 면 디 렉 터 리 에 있 는 모든 그림 을 보 여 줍 니 다.따라서 사용자 가 디 렉 터 리 를 지정 하면 디 렉 터 리 에 있 는 모든 그림 load 를 메모리 에 넣 은 후 display 하 는 클래스 가 있 습 니 다.
 
public class HighResolutionImage implements Image {
	public HighResolutionImage(String imageFilePath) {		
		loadImage(imageFilePath);
	}
	private void loadImage(String imageFilePath) {
		// load Image from disk into memory
		// this is heavy and costly operation
	}
	@Override
	public void showImage() {
		// Actual Image rendering logic
	}
}//             load     ,    showImage  。
// showImage( ), load 。

proxy class 의 역할 은 실제 클래스 의 헤 비 동작 을 경량급 으로 대체 하 는 것 이다.
예 를 들 어, 우 리 는 문 서 를 열 어야 한다. 문서 의 뒷부분 에 그림 이 포함 되 어 있다.우리 가 문 서 를 처음 열 었 을 때, 이 그림 들 을 즉시 로드 할 필요 가 없습니다.우 리 는 아무것도 하지 않 아 도 된다.
그림 대신 가상 으로 불 러 오 거나.사용자 가 문서 의 뒷부분 을 볼 때 만 이 그림 들 을 로드 합 니 다.
이렇게 프 록 시 로 불 러 올 때 우 리 는 추가 동작 을 할 수 있 습 니 다. 최종 적 으로 문 서 를 빠르게 열 수 있 고 그림 을 표시 해 야 할 때 신속하게 표시 할 수 있 습 니 다.
보통 preOperation () 과 post Operation () 등 을 사용 할 수 있다.
 
따라서 proxy 는 목적 에 따라 여러 가지 로 나 눌 수 있다.
Remote Proxy 의 경우 원 격 진실 한 물건 에 부분 적 인 대 표를 제공 할 수 있 습 니 다.
Protection Proxy 는 물건 에 대한 접근 을 제어 합 니 다. 서로 다른 등급, 권한 의 액세스 제 어 를 사용 할 수 있 습 니 다.
Cache Proxy 는 하나의 물건 에 임시 저장 을 제공 하여 많은 클 라 이언 트 들 이 실제 물건 에 대해 직접 요구 하지 않 고 필요 할 때 이 임시 물건 을 업데이트 하거나 고객 에 게 실제 물건 을 직접 액세스 하 게 합 니 다.
 
      image viewer   proxy:
public class ImageProxy implements Image {

	/**
	 * Private Proxy data 
	 */
	private String imageFilePath;	
	/**
	 * Reference to RealSubject
	 */
	private Image proxifiedImage;
	
	public ImageProxy(String imageFilePath) {
		this.imageFilePath= imageFilePath;	
	}	
	@Override
	public void showImage() {
		// create the Image Object only when the image is required to be shown		
		proxifiedImage = new HighResolutionImage(imageFilePath);		
		// now call showImage on realSubject
		proxifiedImage.showImage();		
	}
}//    proxy            。          (  showimage) ,  load image。

 
 

좋은 웹페이지 즐겨찾기