核心:? 客戶端與執(zhí)行者之間加一層代理
本質(zhì):控制對(duì)象訪問(wèn)
因此,? 代理對(duì)象 可以在中間做很多事情
根據(jù)代理做了不同事情,大伙給他們起了一些名字
遠(yuǎn)程代理: Java中RMI技術(shù)? 一個(gè)對(duì)象在多個(gè)不同地址上
虛代理:創(chuàng)建資源消耗特別大的對(duì)象之前的處理,例如用戶信息只需要返回名稱,但是次次返回一個(gè)大的完整對(duì)象,這就沒(méi)有必要
Android中壓縮圖片那塊兒
BitmapFactory.Options newOpts =newBitmapFactory.Options();
//?開(kāi)始讀入圖片,此時(shí)把options.inJustDecodeBounds?設(shè)回true,即只讀邊不讀內(nèi)容
newOpts.inJustDecodeBounds?=true;
這里一定用到了虛代理
保護(hù)代理:訪問(wèn)對(duì)象前加上權(quán)限
智能牽引代理: 在代理對(duì)象操作真實(shí)對(duì)象的前后做一些附加動(dòng)作
代理實(shí)現(xiàn)主要角色
接口 Subject?
實(shí)際對(duì)象 RealSubject實(shí)現(xiàn)接口
代理對(duì)象Proxy 實(shí)現(xiàn)接口,并持有RealSubject的引用
什么是靜態(tài)代理和動(dòng)態(tài)代理
靜態(tài)代理是指的我們自己實(shí)現(xiàn)的
動(dòng)態(tài)代理指的是Java內(nèi)建的,在java.lang.reflect 包下有兩個(gè) Proxy 和InvocationHandler ,代理對(duì)象必須實(shí)現(xiàn)InvocationHandler接口
動(dòng)態(tài)代理的好處是每次接口變化,代理對(duì)象不用變化
還有一種代理實(shí)現(xiàn)方式,就是繼承實(shí)現(xiàn),去掉了接口。
完結(jié)