輕松控制Java署理形式。本站提示廣大學習愛好者:(輕松控制Java署理形式)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松控制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(); } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。