JAVA 디자인 모델 의 대리 모델 에 대해 논 하 다.

에이전트 모드
프 록 시 모드(Proxy Pattern)에서 하 나 는 다른 종류의 기능 을 대표 합 니 다.이런 유형의 디자인 모델 은 구조 형 모델 에 속한다.
프 록 시 모드 에서 우 리 는 외부 에 기능 인 터 페 이 스 를 제공 할 수 있 도록 기 존 대상 을 만 듭 니 다.
소개 하 다.
의도:
이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 에이 전 트 를 제공 합 니 다.
주요 해결:
대상 을 직접 방문 할 때 가 져 오 는 문제,예 를 들 어 방문 할 대상 은 원 격 기계 에 있다.대상 을 대상 으로 하 는 시스템 에서 일부 대상 은 특정한 원인(예 를 들 어 대상 이 비용 이 많이 들 거나 일부 조작 은 안전 통제 가 필요 하거나 프로 세 스 밖의 방문 이 필요 하 다)으로 인해 직접 방문 하 는 것 은 사용자 나 시스템 구조 에 많은 번 거 로 움 을 가 져 올 수 있 습 니 다.우 리 는 이 대상 을 방문 할 때 이 대상 의 방문 층 을 추가 할 수 있 습 니 다.
언제 사용 할 지:
클래스 에 접근 할 때 제어 하고 싶 습 니 다.
어떻게 해결 합 니까?
중간층 을 늘리다.
키 코드:
피 대리 류 와 의 조합 을 실현 하 다.
인 스 턴 스 적용:
1.윈도 안의 단축 키.
 2.저팔계 가 고 취 란 을 찾 아 갔 더 니 손오공 이 변 했다.이렇게 이해 할 수 있다.고 취 란 의 외 모 를 추상 화하 고 고 취 란 본인 과 손오공 이 이 인 터 페 이 스 를 실현 했다.저팔계 가 고 취 란 을 방 문 했 을 때 이것 이 손오공 인 줄 몰 랐 기 때문에 손오공 은 고 취 란 대리 류 이다.
3.기차 표를 사 는 것 이 꼭 기차 역 에서 사 는 것 이 아니 라 대리 판매 점 에 갈 수도 있 습 니 다.
4.수표 나 은행 예금증서 한 장 은 계좌 중의 자금 의 대리 이다.수 표 는 시장 거래 에서 현금 을 대체 하고 발행인 계좌 에 있 는 자금 에 대한 통 제 를 제공한다.
5、spring aop。
장점:
1.직책 이 뚜렷 하 다.
2.높 은 확장 성.
3.지능 화.
단점:
1.클 라 이언 트 와 실제 테마 사이 에 대리 대상 을 추 가 했 기 때문에 일부 유형의 대리 모델 은 요청 한 처리 속도 가 느 려 질 수 있 습 니 다.
2.대리 모델 을 실현 하려 면 추가 적 인 업무 가 필요 하고 일부 대리 모델 의 실현 은 매우 복잡 하 다.
사용 필드:
직책 에 따라 구분 하면 보통 다음 과 같은 사용 장면 이 있다.
1.원 격 에이전트.
2.가상 에이전트.
3.Copy-on-WRite 대리.
4.보호(Protect or Access)대리.
5.Cache 대리.
6.방화벽(Firewall)대리.
7.동기 화(Synchronization)에이전트.
8.스마트 참조(Smart Reference)에이전트.
주의사항:
1.어댑터 모델 과 의 차이 점:어댑터 모델 은 주로 고려 대상 의 인 터 페 이 스 를 바 꾸 고 프 록 시 모델 은 프 록 시 클래스 의 인 터 페 이 스 를 바 꿀 수 없습니다.
2.장식 기 모델 과 의 차이:장식 기 모델 은 기능 을 강화 하기 위해 대리 모델 은 통 제 를 하기 위해 서 이다.
이루어지다
우 리 는 Image 인 터 페 이 스 를 만 들 고 Image 인 터 페 이 스 를 실현 하 는 실체 클래스 를 만 들 것 이다.ProxyImage 는 RealImage 대상 이 불 러 오 는 메모리 사용량 을 줄 이 는 프 록 시 클래스 입 니 다.
프 록 시 PatternDemo,프 록 시 이미지 로 불 러 올 이미지 대상 을 가 져 오고 필요 에 따라 표시 합 니 다.

단계 1
인 터 페 이 스 를 만 듭 니 다.
Image.java

public interface Image {
 void display();
}
단계 2
인 터 페 이 스 를 실현 하 는 실체 클래스 를 만 듭 니 다.
RealImage.java

public class RealImage implements Image {
 
 private String fileName;
 
 public RealImage(String fileName){
  this.fileName = fileName;
  loadFromDisk(fileName);
 }
 
 @Override
 public void display() {
  System.out.println("Displaying " + fileName);
 }
 
 private void loadFromDisk(String fileName){
  System.out.println("Loading " + fileName);
 }
}
ProxyImage.java

public class ProxyImage implements Image{
 
 private RealImage realImage;
 private String fileName;
 
 public ProxyImage(String fileName){
  this.fileName = fileName;
 }
 
 @Override
 public void display() {
  if(realImage == null){
   realImage = new RealImage(fileName);
  }
  realImage.display();
 }
}
단계 3
요청 이 들 어 왔 을 때,RealImage 클래스 의 대상 을 프 록 시 이미지 로 가 져 옵 니 다.
ProxyPatternDemo.java

public class ProxyPatternDemo {
 
 public static void main(String[] args) {
  Image image = new ProxyImage("test_10mb.jpg");
 
  //         
  image.display(); 
  System.out.println("");
  //           
  image.display(); 
 }
}
단계 4
실행 프로그램,출력 결과:
Loading test_10mb.jpg
Displaying test_10mb.jpg
Displaying test_10mb.jpg
JAVA 디자인 모델 의 프 록 시 모델 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JAVA 프 록 시 모델 에 관 한 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기