我知道代理模式直到現在,最近讀this文章說虛擬代理基本上用於推遲內存密集型組件的對象創建過程,從而加速應用程序。代理模式和虛擬代理模式之間的差異
但看完這篇文章後,它看起來像代理模式和虛擬代理模式是一回事。我是對的還是我明白了這個錯誤?
我知道代理模式直到現在,最近讀this文章說虛擬代理基本上用於推遲內存密集型組件的對象創建過程,從而加速應用程序。代理模式和虛擬代理模式之間的差異
但看完這篇文章後,它看起來像代理模式和虛擬代理模式是一回事。我是對的還是我明白了這個錯誤?
有不同類型的代理模式。虛擬代理就是其中之一。其他人(來自GOF)是保護代理,遠程代理,智能參考。來自GOF:
遠程代理爲位於不同地址空間的對象提供本地代理。
虛擬代理按需創建昂貴的對象。
保護代理控制對原始對象的訪問。當對象應具有不同的訪問權限時,保護代理非常有用。
智能參考是用於當一個對象被訪問執行附加動作裸指針替換
GoF的設計模式書中提到幾種代理,虛擬代理(它創建按需昂貴對象)就是其中之一。
其他類型的代理是遠程代理(爲不同地址空間中的對象提供本地接口),保護代理(處理訪問權限)和智能引用(在訪問對象時執行其他操作)。
所以,雖然虛擬代理是絕對代理,但並非所有的代理都是虛擬的。
我們可以在創建Custom Camera的情況下使用虛擬代理模式。
想想如果Capture_image頁面中有3-4個點擊選項,每次點擊Capture_image時都不好創建相機對象,因爲初始化表面視圖(視圖用於在android中創建相機) 需要時間。因此,在這種情況下,我們可以使用虛擬代理模式在視圖被破壞時隨時使用相同的實例並銷燬此相機對象。