JAVA 디자인 모델의 프록시 모델[Proxy Pattern]
2911 단어 java 디자인 모드프록시 모드
대상에 에이전트를 제공하고 에이전트가 원래 대상에 대한 접근을 완료합니다.대리 모델은 일종의 대상 구조형 모델이다.
2. 적용 장면
특정한 대상에 직접 접근할 수 없거나 특정한 대상을 방문하는 데 어려움이 있을 때 하나의 에이전트 대상을 통해 간접적으로 접근할 수 있으며 클라이언트가 사용하는 투명성을 확보하기 위해 의뢰 대상과 에이전트 대상은 같은 인터페이스를 실현해야 한다.
3. UML 클래스
4. 참가자
1. 인터페이스 클래스: Subject
이것은 실제 방문자와 프록시 방문자의 공동 인터페이스를 설명하는데, 클라이언트는 일반적으로 인터페이스 역할에 대해 프로그래밍을 해야 한다.
2. 프록시 클래스: ProxySubject
진실(위탁) 대상(RealSubject)에 대한 인용을 포함하고 실현된 인터페이스 방법에서 인용 대상의 인터페이스 방법을 호출하여 집행함으로써 대리 역할을 한다.프록시 객체(ProxySubject)가 작동하는 것처럼 보이지만 실제 작업자는 위임 객체(RealSubject)입니다.
3. 위탁 클래스/실제 방문 클래스: RealSubject
이것은 에이전트 역할이 대표하는 진실한 대상을 정의하고 진실한 역할에서 진실한 업무 조작을 실현하며 클라이언트는 에이전트 역할을 통해 진실한 역할에서 정의한 조작을 간접적으로 호출할 수 있다.
5. 용례 학습
1. 인터페이스 클래스: Subject.java
/**
*
* @author [email protected]
*
*/
public interface Subject {
public void visit();
}
2. 인터페이스 구현 클래스,
실제 방문 대상/위탁 대상:
RealSubject.java
/**
* , /
* @author [email protected]
*
*/
public class RealSubject implements Subject {
@Override
public void visit() {
System.out.println("I am 'RealSubject',I am the execution method");
}
}
3. 인터페이스 구현 클래스, 프록시 대상:
ProxySubject.java
/**
* ,
* @author [email protected]
*
*/
public class ProxySubject implements Subject {
// ,
private Subject realSubject;
public ProxySubject(Subject subject){
this.realSubject = subject;
}
@Override
public void visit() {
//
realSubject.visit();
}
}
4、
Client.java
/**
*
* @author [email protected]
*
*/
public class Client {
public static void main(String[] args) {
Subject proxySubject = new ProxySubject(new RealSubject());
proxySubject.visit();
}
}
6. 기타/확장
프록시 클래스가 만들어진 시기에 따라 프록시 클래스는 두 가지로 나눌 수 있습니다.
1. 정적 에이전트: 프로그래머가 만들거나 특정한 도구가 자동으로 원본 코드를 생성하여 컴파일합니다.프로그램이 실행되기 전에 프록시 클래스의.class 파일이 이미 존재합니다.(위에서 예시한 것은 정적 대리 기술이다)
정적 에이전트의 우열 분석:
장점: 클라이언트가 인터페이스 프로그래밍을 하고 개폐 원칙에 부합되며 시스템이 좋은 유연성과 확장성을 가지도록 한다.
단점: 위 코드에서 우리는 모든 에이전트 클래스가 특정한 인터페이스를 실현했고 모든 에이전트 클래스는 특정한 인터페이스 아래의 실현 클래스만 에이전트로 할 수 있음을 알 수 있다.서로 다른 인터페이스 아래의 다른 실현 클래스라면 새로운 인터페이스 아래의 에이전트 클래스를 다시 정의해야 합니다.
그러면 하나의 에이전트 클래스를 통해 서로 다른 인터페이스를 통해 클래스의 에이전트 조작을 실현할 수 있습니까?그러면 이때 반드시 동적 에이전트를 사용하여 완성해야 한다.
2. 동적 에이전트: 프로그램이 실행될 때 JAVA 반사 메커니즘을 이용하여 동적 에이전트 실례를 만든다.
[티저: 다이내믹 에이전트 기술에 대해 샤오리는 다음 편에서 자세히 소개할 예정입니다.]
—————————————————————————————————————
만약 문장 내용이 당신에게 도움이 된다면, 잊지 말고, 한 번 반박하고 지지해 주십시오.
글의 내용에 대해 궁금한 점이 있거나 더 나은 견해가 있으면 댓글이나 메일로 연락 주세요.
[email protected] / [email protected]
전재가 필요하다면, 출처를 밝혀 주십시오, 감사합니다!!
—————————————————————————————————————
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어댑터(클래스 어댑터, 객체 어댑터 모드)1: 클래스 어댑터 모드 만일 우리가 Person류가 있다면, 이 Person류에는 불고 당기는 방법이 있다.시스템 개발의 절반에 이르러 우리는 이 종류에 두 가지 방법을 더 첨가하여 연주, 당기기, 연주, 노래의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.