Définition : Fournir un proxy pour d'autres objets afin de contrôler l'accès à cet objet. Dans certains cas, un objet ne convient pas ou ne peut pas référencer directement un autre objet, et un objet proxy peut servir d'intermédiaire entre le client et l'objet cible.
Caractéristiques :
1. Le véritable rôle est de mettre en œuvre la logique métier réelle. Vous n'avez pas à vous soucier d'autres questions qui ne relèvent pas de vos responsabilités. le dernier agent, et le résultat qui l'accompagne est la programmation. Soyez concis et clair.
2. L'objet proxy peut agir comme intermédiaire entre le client et l'objet cible, jouant ainsi le rôle d'intermédiaire et protégeant l'objet cible.
3. Haute évolutivité
Développement et applications au niveau de l'entreprise dans des frameworks communs : le plus connu est l'aop de Spring, et la création de bean de Spring utilise en fait des proxys
Le mode proxy est divisé en proxy dynamique et proxy statique. Le proxy dynamique est particulièrement utilisé dans le développement.
Procuration statique :
/** * 以买房举例 */ 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(); } }
Procuration dynamique :
/** * 以买房举例 */ 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(); } }
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun, et j'espère que vous en apprendrez davantage. Supportez le site Web chinois PHP.
Pour plus d'articles sur la maîtrise facile du mode proxy Java, veuillez faire attention au site Web PHP chinois !