정의: 이 개체에 대한 액세스를 제어하기 위해 다른 개체에 대한 프록시를 제공합니다. 어떤 경우에는 한 개체가 적합하지 않거나 다른 개체를 직접 참조할 수 없으며 프록시 개체가 클라이언트와 대상 개체 사이의 중개자 역할을 할 수 있습니다.
특징:
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 중국어 웹사이트를 주목하세요!