>  기사  >  Java  >  Java 프록시 모드를 쉽게 마스터하세요

Java 프록시 모드를 쉽게 마스터하세요

高洛峰
高洛峰원래의
2017-02-07 13:15:121093검색

정의: 이 개체에 대한 액세스를 제어하기 위해 다른 개체에 대한 프록시를 제공합니다. 어떤 경우에는 한 개체가 적합하지 않거나 다른 개체를 직접 참조할 수 없으며 프록시 개체가 클라이언트와 대상 개체 사이의 중개자 역할을 할 수 있습니다.

특징:

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();
 }
}

위 내용이 모두의 학습에 도움이 되기를 바랍니다. 모두가 PHP 중국어 웹사이트를 지원할 것입니다.

Java 프록시 모드를 쉽게 익히는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.