日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android插件化开发基础之静态代理模式

發(fā)布時間:2023/12/4 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android插件化开发基础之静态代理模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一 Proxy模式

意圖:

?????? 為其他對象提供一種代理以控制這個對象的訪問。

適用性:

  l? 遠程代理( Remote Proxy ): 為一個對象在不同的地址空間提供局部代表。

  l? 虛代理(Virtual Proxy)根據(jù)需要創(chuàng)建開銷很大的對象。使用一個代理對象作為代表,在真正的需要時進行創(chuàng)建。

  l? 保護代理(Protection Proxy):控制對原始對象的訪問。保護代理用于對象應該有不同的訪問權限的時候。

  l? 智能指引(Smart Reference): 取代了簡單的指針,它在訪問對象時執(zhí)行一些附加操作。對指向實際對象的引用計數(shù),

    這樣當該對象沒有引用時,可以自動釋放它,智能指針當?shù)谝淮我靡粋€持久對象時,將它裝入內存。

    在訪問一個實際對象前,檢查是否已經(jīng)鎖定了它,以確保其他對象不能改變它

?

其實每個模式名稱就表明了該模式的作用,代理模式就是多一個代理類出來,替原對象進行一些操作,比如我們在租房子的時候回去找中介,為什么呢?因為你對該地區(qū)房屋的信息掌握的不夠全面,希望找一個更熟悉的人去幫你做,此處的代理就是這個意思。再如我們有的時候打官司,我們需要請律師,因為律師在法律方面有專長,可以替我們進行操作,表達我們的想法。先來看看關系圖:

根據(jù)上文的闡述,代理模式就比較容易的理解了,我們看下代碼:

public interface Sourceable { public void method(); }


?

public class Source implements Sourceable { @Override public void method() { System.out.println("the original method!"); } }


?

public class Proxy implements Sourceable { private Source source; public Proxy(){ super(); this.source = new Source(); } @Override public void method() { before(); source.method(); atfer(); } private void atfer() { System.out.println("after proxy!"); } private void before() { System.out.println("before proxy!"); } }


?

public class ProxyTest { public static void main(String[] args) { Sourceable source = new Proxy(); source.method(); } }

輸出:

before proxy!
the original method!
after proxy!

代理模式的應用場景:

如果已有的方法在使用的時候需要對原有的方法進行改進,此時有兩種辦法:

1、修改原有的方法來適應。這樣違反了“對擴展開放,對修改關閉”的原則。

2、就是采用一個代理類調用原有的方法,且對產生的結果進行控制。這種方法就是代理模式。

使用代理模式,可以將功能劃分的更加清晰,有助于后期維護!

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的Android插件化开发基础之静态代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。