亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

模式的秘密---代理模式

難度中級
時長 2小時 0分
學習人數
綜合評分9.70
184人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.7 邏輯清晰
  • 相關代碼——(下): @TestJDKProxy.java public class TestJDKProxy { /** * JDK動態代理測試類 */ public static void main(String[] args) { Car car=new Car(); InvocationHandler h=new TimeHandler(car); Class<?> cls=car.getClass(); /** * 參數:loader:類加載器;interface:實現接口;h:InvocationHandler。 */ Moveable m=(Moveable) Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), h); m.move(); m.move1(); /** * 執行順序:m.move()后先執行TimeHandler類中的invoke()方法, * 當執行到method.invoke(target);時,再去執行目標類Car的move()方法, * 然后返回method.invoke(target);的下一句,最后返回這里執行完畢。 */ } } @Moveable.java public interface Moveable { void move(); void move1(); } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 相關代碼——(上): @Car.java public class Car implements Moveable{ public void move() { //實現打車 try { Thread.sleep(new Random().nextInt(1000)); System.out.println("車行駛中..."); } catch (Exception e) { e.printStackTrace(); } } public void move1() { // TODO Auto-generated method stub System.out.println("move1"); } } @TimeHandler.java public class TimeHandler implements InvocationHandler { private Object target; public TimeHandler(Object target) { super(); this.target = target; } /** * 參數: * proxy:被代理對象;method:被代理對象的方法;args:方法的參數。 * 返回值: * Object:方法的返回值。 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { long starttime=System.currentTimeMillis(); System.out.println("車開始行駛..."); method.invoke(target);//通過反射機制:Method是一個方法,方法對象。Method.Invoke()相當于method(); long endtime=System.currentTimeMillis(); System.out.println("車結束行駛。"); System.out.println("車行駛時間:"+(endtime-starttime)+"毫秒!"); return null; } }
    查看全部
  • 相關代碼——(下): @Client.java public class Client { /** * 測試類 */ public static void main(String[] args) { Car car=new Car(); /*CarTimeProxy ctp=new CarTimeProxy(car); CarLogProxy clp=new CarLogProxy(ctp); clp.move();*/ CarLogProxy clp=new CarLogProxy(car); CarTimeProxy ctp=new CarTimeProxy(clp); ctp.move(); } } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 相關代碼——(上): @Car.java public class Car implements Moveable{ public void move() { //實現打車 try { Thread.sleep(new Random().nextInt(1000)); syso("車行駛中..."); } catch (Exception e) { ... } } } @Moveable.java public interface Moveable { void move(); } @CarLogProxy.java public class CarLogProxy implements Moveable { private Moveable m; public CarLogProxy(Moveable m){ super(); this.m=m; } public void move() { syso("日志開始..."); m.move(); syso("日志結束..."); } } @CarTimeProxy.java public class CarTimeProxy implements Moveable { private Moveable m; public CarTimeProxy(Moveable m){ super(); this.m=m; } public void move() { long starttime=System.currentTimeMillis(); syso("車開始行駛..."); m.move(); long endtime=System.currentTimeMillis(); syso("車結束行駛。"); syso("車行駛時間:"+(endtime-starttime)+"毫秒!"); } } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 相關代碼(聚合方式:一個類中調用另一個類對象): @Client.java public class Client { /** * 測試類 */ public static void main(String[] args) { //使用聚合方式 Car car=new Car(); Moveable m=new Car3(car); m.move(); } } @Moveable.java public interface Moveable { void move(); } @Car.java public class Car implements Moveable{ public void move() { //實現打車 try { Thread.sleep(new Random().nextInt(1000)); System.out.println("車行駛中..."); } catch (Exception e) { e.printStackTrace(); } } } @Car3.java public class Car3 implements Moveable { private Car car; public Car3(Car car){ super(); this.car=car; } public void move() { long starttime=System.currentTimeMillis(); System.out.println("車開始行駛..."); car.move(); long endtime=System.currentTimeMillis(); System.out.println("車結束行駛。"); System.out.println("車行駛時間:"+(endtime-starttime)+"毫秒!"); } } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 相關代碼(繼承方式): @Client.java public class Client { /** * 測試類 */ public static void main(String[] args) { //使用繼承方式 Moveable m=new Car2(); m.move(); } } @Car2.java public class Car2 extends Car{ @Override public void move() { long starttime=System.currentTimeMillis(); System.out.println("車開始行駛..."); super.move(); long endtime=System.currentTimeMillis(); System.out.println("車結束行駛。"); System.out.println("車行駛時間:"+(endtime-starttime)+"毫秒!"); } } @Moveable.java public interface Moveable { void move(); } @Car.java public class Car implements Moveable{ public void move() { //實現打車 try { Thread.sleep(new Random().nextInt(1000)); System.out.println("車行駛中..."); } catch (Exception e) { e.printStackTrace(); } } } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 相關代碼(原始方式): @Car.java public class Car implements Moveable{ public void move() { long starttime=System.currentTimeMillis(); System.out.println("車開始行駛..."); //實現打車 try { Thread.sleep(new Random().nextInt(1000)); System.out.println("車行駛中..."); } catch (Exception e) { e.printStackTrace(); } long endtime=System.currentTimeMillis(); System.out.println("車結束行駛。"); System.out.println("車行駛時間:"+(endtime-starttime)+"毫秒!"); } } @Moveable.java public interface Moveable { void move(); } @Client.java public class Client { /** * 測試類 */ public static void main(String[] args) { Car car=new Car(); car.move(); } } 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • @智能引用代理的應用 代理模式定義:為其他對象提供一種代理,以控制對這個對象的訪問(例如火車站代售處)。代理對象起到中介作用,可去掉功能服務或增加額外的服務。 代理模式分類: 1、遠程代理(Remote Proxy)——為不同地理的對象提供局域網代表對象。(類似于客戶端和服務器端) 2、虛擬代理(Virtual Proxy)——根據需要將資源消耗很大的對象進行延遲,真正需要的時候才進行創建。(網頁中圖片的加載,先用一張虛擬的圖片進行顯示,等圖片加載完成后再進行顯示) 3、保護代理(Protect Proxy)——控制用戶的訪問權限。(發帖功能) 4、智能引用代理(Smart Reference Proxy)——提供對目標對象一些額外的服務。(火車站代售處為火車站代理) 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • @保護代理的應用 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • @虛擬代理的應用 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • @遠程代理的應用 【溫馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等編程愛好者關注我,加我慕課好友,互相學習,共同進步!】
    查看全部
  • 動態代理實現步驟
    查看全部
  • AOP
    查看全部
    0 采集 收起 來源:課程總結

    2016-04-05

  • 設計理念
    查看全部
    0 采集 收起 來源:課程總結

    2016-04-05

  • 動態代理的實現步驟
    查看全部

舉報

0/150
提交
取消
課程須知
本課程是 Java 開發課程的高級課程,希望各位小伙伴們在學習本課程之前,了解以下內容: 1)初步具備面向對象的設計思維 2)了解多態概念 3)了解反射
老師告訴你能學到什么?
1、代理模式概念機分類 2、代理模式應用場景 3、掌握靜態代理、動態代理運用 4、理解JDK動態代理實現原理

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!