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 프 록 시 모델 에 관 한 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.