代理模式分爲靜態代理和動態代理 ,靜態代理是編譯階段就生成代理類來完成對代理對象的一系列操做。動態代理是指在運行時動態生成代理類。即代理類的字節碼將在運行時生成並載入當前代理的 ClassLoader。ide
靜態代理就是在程序運行前就已經肯定代理類與代理對象的代理模式,它一般用於對原有業務邏輯的擴充。好比某個接口類,並調用其中的某些方法,出於對記錄日誌、打印方法執行時間等的某種緣由,又沒法將這些邏輯寫入接口類的方法裏。所以須要建立一個代理類實現和二方方法相同的方法,經過讓代理類持有真實對象的方式,在原代碼中調用代理類方法,以達到添加須要業務邏輯的目的。代理
須要相關資料的朋友,能夠【加入此處便可打包獲取】日誌
1.首先建立代理類,在代理類裏面實現接口,再建立聲明類,而後實例化獲得對象。
(1)聲明一個接口類,以下圖所示。對象
(2)定義一個租房子的方法,以下圖所示。blog
2.具體實現須要再定義一個類,這個類實現接口類裏面的方法,此時就須要經過代理來完善或者達到需求,修改這個方法或者擴展這個方法,可是又不能變更原有的方法,步驟以下:
(1)建立代理類而且實現接口,以下圖所示。接口
(2)聲明一個對象後進行實例獲得對象,以下圖所示。圖片
(3)在代理類裏面定義兩個方法分別是代理以前和代理以後,以下圖所示。get
(4)調用裏面的方法,作出相應的修改,好比參數、返回值等,這也就是代理的做用。
在MainActivity裏面實例化代理的類,此時爲proxy類,以下圖所示。it
而後運行打印一下log日誌信息,效果如圖1.7所示。代理的做用一目瞭然,清晰可見它的變化。編譯
主要分享了靜態代理的概念,以及如何使用靜態代理。實戰操做靜態代理的使用以及代碼的編寫。