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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式系列】结构型模式之Proxy模式

發布時間:2025/7/14 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式系列】结构型模式之Proxy模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概要 有時候可能我們不希望暴露現有對象的所有接口,只希望公開其中部分接口,具體來說,比如我們有個對象具有一系列的方法接口,如果我們只需要這些接口中間的一小部分,那么我們沒必要去創建這個對象本身,我們可以通過一個更輕量的對象作為代理來公開我們需要的那部分接口。

目的 基于需求提供代理對象來實現既有對象接口,可以通過這種模式來調整現有接口的封裝。
實例 如概要里面所述的通過代理來暴露部分接口的應用比較簡單易懂,這里就不舉相關實例來進行說明了。這里舉個更典型的Proxy模式的應用方式。 很多應用中經常需要加載圖片,視屏等大容量媒體對象,一些第三方庫會提供相應的接口,以圖片為例,大致接口如下: class IImage { public:virtual void Show() = 0; };class HighImage : public IImage { public:HighImage(string path) {LoadImage(path);}void LoadImage();virtual void Show();...... };
HighImage是一個第三方已經提供的支持顯示高清圖片的對象,在創建這個對象的時候會加載圖片,然后Show函數會把已經加載的圖片顯示出來。 但是在實際使用中卻出現了這樣的問題,在初始化創建HighImage對象的時候,會加載高清圖片,由于高清圖片容量比較大,加載需要花費一定時間,目前的需求是希望在初始化創建過程中不要去花費時間加載圖片,而是在需要顯示的時候才去加載并顯示出來。 Proxy模式該登場了。讓我們通過Proxy代理對象來解決上面的問題。新建一個HighImageProxy類(備注:代碼中對象怎么銷毀不在考慮范疇)。
class HighImageProxy { public:HighImageProxy(string path) {mPath = path;}virtual void Show() {mImage = new HighImage(mPath);mImage->Show();} private:HighImage* mImage; string mPath; };
HighImageProxy類代理了HighImage的基本行為,但是它在創建對象時并不加載圖片,而是在Show方法里進行加載。對Client端而言,在創建HighImageProxy對象時不需要花費圖片加載的時間,滿足了我們的需求。
應用 一些安全代理中經常會限制對象的訪問權限,很多都是通過Proxy模式來實現的。如上面實例的Proxy模式應用也是非常常見的一種。另外也要注意Proxy模式和Adapter模式的區別,Adapter模式是會改變接口調用形式來進行適配的,而Proxy模式則是不會改變現有接口形式,使用相同的接口調用方式。

轉載于:https://www.cnblogs.com/secbook/archive/2012/04/17/2655119.html

總結

以上是生活随笔為你收集整理的【设计模式系列】结构型模式之Proxy模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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