JAVA 동적 프록시 모드(현실생활에서 코드 원리 이해)
자바 동적 에이전트는 주로 자바를 사용합니다.lang.reflect 패키지의 두 종류입니다.
InvocationHandler 클래스
public Object invoke(Object obj,Method method,Object[] obs) 그 중에서 첫 번째 매개 변수obj는 프록시 클래스를 가리키고method는 프록시되는 방법,obs는 프록시되는 방법의 매개 변수 그룹을 가리킨다.이 방법은 대리류로 이루어진다.Proxy 클래스
protectedProxy(InvocationHandler h);
staticClass getProxyClass(ClassLoader loader,Class[] interfaces);
staticObject newProxyInstance(ClassLoader loader,Class[]interfaces,InvocationHandlerh);
마찬가지로 코드가 실현되기 전에 우리는 체인가에 대한 이야기를 해야 한다. 이전에 정적 대리 모델에서 체인가(인터페이스)는 중고 주택을 파는 업무가 있고 회사에는 대량의 주택 판매 엘리트(정적 대리)가 있다고 언급했지만 현재 인터넷 금융의 발전 추세가 매우 빠르다. 체인가도 끼어들고 싶지만 관련 인재(대리)의 비축이 없어서 고생한다.이때 회사는 관련 인재 시장(동적 대리'공장')에서 전문 인재를 찾아 이런 업무를 실현하겠다는 생각을 가지게 되었다. 인재 시장은 말 그대로 기업(인터페이스)의 특정한 수요(대리받는 방법)에 따라 관련 기능을 가진 인재를 찾는 것이다.다음은 동적 에이전트의 구현 코드를 시작합니다.
1단계: LianJia가 주택 매매 및 인터넷 대출 채널을 제공하는 방법(인터넷)
 interface LianJia {
   public void sellHouse();
   public void loan();
 }
public class HouseMaster implements LianJia {
  @Override
  public void sellHouse() {
    System.out.println(" ");
  }
  @Override
  public void loan() {
    System.out.println(" ");
  }
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class CreatProxy implements InvocationHandler{
  // ( Object Java )
  private Object target;
  // ( )
  public Object bind(Object target){
    this.target = target;
    // Proxy 
    Object proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    return proxy;
  }
  // 
    /**
     * proxy:  
     * method: 
     * args: 
     */
  public Object invoke(Object proxy, Method method, Object[] args)
      throws Throwable {
    // 
    method.invoke(target);
    return null;
  }
}
public class Test {
  public static void main(String[] args) {
    HouseMaster hm = new HouseMaster();
    CreatProxy cp = new CreatProxy();
    LianJia lj = (LianJia) cp.bind(hm);
    lj.sellHouse();
    lj.loan();
  }
}이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.