간편한 Java 프록시 모드

정의: 이 대상에 대한 접근을 제어하기 위해 다른 대상에 에이전트를 제공합니다.어떤 경우, 한 대상이 적합하지 않거나 다른 대상을 직접 인용할 수 없으며, 대리 대상은 클라이언트와 목표 대상 사이에서 중개 역할을 할 수 있다.
특징:
1. 진실한 역할은 실제 업무 논리를 실현하는 것이다. 다른 본 직책이 아닌 사무에 관심을 갖지 않고 후기의 대리를 통해 하나의 완성 사무를 완성한다. 부대 결과는 바로 프로그래밍이 간결하고 명확하다는 것이다.
2. 대리 대상은 클라이언트와 목표 대상 사이에서 중개 역할을 할 수 있고 이렇게 하면 중개 역할과 목표 대상을 보호하는 역할을 한다.
3, 높은 확장성
기업급 개발과 상용 프레임워크에서의 응용: 가장 유명한 것은spring의 aop, 그리고spring의 bean의 창설도 사실 에이전트에 사용된다
에이전트 모델은 동적 에이전트와 정적 에이전트로 나뉘는데 동적 에이전트는 개발 과정에서 특히 많이 응용된다.
정적 에이전트:

/**
 *  
 */
interface Actions {

 /**
 *  
 */
 public void selectHouse();
 
 /**
 *  
 */
 public void seeHouse();
 
 /**
 *  
 */
 public void ruzhu();
 
}

class RealRole implements Actions{

 public void selectHouse() {
 System.out.println(" ");
 }

 public void seeHouse() {
 System.out.println(" ");
 }

 public void ruzhu() {
 System.out.println(" ");
 }

}

class ProxyRole implements Actions{

 private RealRole realRole;
 
 public ProxyRole(RealRole realRole) {
 this.realRole = realRole;
 }
 
 public void selectHouse() {
 System.out.println(" ");
 }

 public void seeHouse() {
 System.out.println(" ");
 }

 @Override
 public void ruzhu() {
 realRole.ruzhu();
 }

}

public class Demo {

 public static void main(String[] args) {
 RealRole realRole = new RealRole();
 ProxyRole proxyRole = new ProxyRole(realRole);
 proxyRole.selectHouse();
 proxyRole.seeHouse();
 proxyRole.ruzhu();
 }
}

동적 에이전트:

/**
 *  
 */
interface Actions {

 /**
 *  
 */
 public void selectHouse();
 
 /**
 *  
 */
 public void seeHouse();
 
 /**
 *  
 */
 public void ruzhu();
 
}

class RealRole implements Actions{

 public void selectHouse() {
 System.out.println(" ");
 }

 public void seeHouse() {
 System.out.println(" ");
 }

 public void ruzhu() {
 System.out.println(" ");
 }

}

class Handler implements InvocationHandler{

 private RealRole realRole ;
 
 public Handler(RealRole realRole) {
 this.realRole = realRole;
 }
 
 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
 System.out.println(realRole);
 System.out.println(" , ");
 method.invoke(realRole, args);
 return null;
 }

}

public class Demo {

 public static void main(String[] args) {
 RealRole realRole = new RealRole();
 
 Handler handler = new Handler(realRole);
 
 Actions proxy = (Actions) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Actions.class}, handler);
 proxy.ruzhu();
 }
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기