Net設計模式實例之代理模式(Proxy Pattern)

一、代理模式簡介(Brief Introduction

代理模式(Proxy Pattern)對其他對象提供一種代理以控制對這個對象的訪問。

二、解決的問題(What To Solve

1、遠程代理

遠程代理,也就是為了一個對象在不同的地址空間提供局部代表。這樣可隱藏一個對象存在與不同地質空間的事實,隱藏對象所在的地址空間。

比如.Net Web Service ,當一個項目在加入一個Web引用,引用Web Service的時候會在項目中生成一個WebReference文件夾和響應的文件,這些文件夾和文件就是代理,?客戶端在調用此代理的時候實際上已經解決了遠程訪問的問題。

2、虛擬代理

虛擬代理,是根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的真實對象。這樣可以達到最優化的性能。

比如瀏覽器使用代理模式優化網頁下載,也就是首先展示網頁文字,圖片需要一張一張地下載后才能看到。

3、安全代理

安全代理,用來控制真實對象訪問時的權限。一般用于對象應該有不同的訪問權限的時候。

4、智能指引

??????????????智能指引,是指當調用真實的對象時,代理處理另外一些事情。比如,在訪問一個實際對象前,檢查是否已經鎖定它,以確保其他對象不能改變它。也就是在訪問一個對象時附加的一些內務處理。

三、代理模式分析(Analysis

1、代理模式結構

???????

2、源代碼

1、抽象類?Subject

public?abstract?class?Subject

{

????public??abstract?void?Request();

}

?

2、真實實體RealSubject?繼承于Subject

public?class?RealSubject:Subject

{

????public?override?void?Request()

????{

????????Console.WriteLine("對象的真實實體方法在執行。");

????}

}

?

3、代理類Proxy?繼承于Subject類,同時引用RealSubject

public?class?Proxy:Subject

{

????private?RealSubject?realSubject;

????public?override?void?Request()

????{

????????Console.WriteLine("通過代理類訪問對象真實實體的方法。");

????????if?(realSubject ==?null)

????????{

????????????realSubject =?new?RealSubject();

????????}

????????realSubject.Request();

????}

}

?

4、客戶端代碼

class?Program

{

????static?void?Main(string[] args)

????{

????????Proxy?proxy =?new?Proxy();

????????proxy.Request();

????????Console.Read();

????}

}

3、程序運行結果

四.案例分析(Example

五、總結(Summary

代理模式(Proxy Pattern)對其他對象提供一種代理以控制對這個對象的訪問。代理模式分為遠程代理、虛擬代理、安全代理和智能指引。



本文轉自靈動生活博客園博客,原文鏈接:http://www.cnblogs.com/ywqu/archive/2010/01/22/1653875.html?,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540812.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540812.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540812.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言存儲類_C編程語言的存儲類

c語言存儲類A variables storage class tells us the following, 變量的存儲類告訴我們以下內容: Where the variables would be stored? 變量將存儲在哪里? What will be the initial of the variable, if the initial value is not specifically ass…

jsonp請求html頁面,JavaScript中的JSON和JSONP

簡單地使用json并不能支持跨域資源請求,為了解決這個問題,需要采用jsonp數據交互協議。眾所周知,js文件的調用不受跨域與否的限制,因此如果想通過純web端跨域訪問數據,只能在遠程服務器上設法將json數據封裝進js格式的…

2017軟件工程實踐

課程信息 軟件工程實踐 參考教材 《構建之法》 作者:鄒欣, 編輯:周筠 他山之石 北京航空航天大學 羅杰, 劉乾 東北師范大學 楊貴福 北京電子科技學院 婁嘉鵬 教師:汪璟玢 助教:卞…

suse leap_Ruby程序檢查leap年

suse leapProblem statement: Given a year, we have to check whether it is a Leap year or not using Ruby program. 問題陳述 :給定年份,我們必須使用Ruby程序檢查是否為Le年。 Methods used: 使用的方法: gets(): This method is a pu…

html導航欄點擊不能跳轉,無法單擊導航欄中的鏈接CSS HTML

不確定是否允許您鏈接您的網站,但是如果允許。 因此,我可以將所有鏈接懸停在導航欄中,但我無法點擊它們,并且S的圖片是可移動的,但無法點擊,我做錯了什么?無法單擊導航欄中的鏈接CSS HTMLNickeb…

JAVA 取得當前目錄的路徑/Servlet/class/文件路徑/web路徑/url地址

2019獨角獸企業重金招聘Python工程師標準>>> 在寫Java程序時不可避免要獲取文件的路徑...總結一下,遺漏的隨時補上 1.可以在servlet的init方法里 String path getServletContext().getRealPath("/"); 這將獲取web項目的全路徑 例如 :E:\eclipseM9\worksp…

關于細分到字段的權限系統_操作系統中的細分

關于細分到字段的權限系統為什么需要細分? (Why Segmentation is required?) In the Operating System, an important drawback of memory management is the separation of the users view of memory and the actual physical memory. Paging is the scheme which…

計算機科學技術專業解析,專業解讀—計算機科學與技術

原標題:專業解讀—計算機科學與技術專業培養目標:本專業培養具有良好的科學素養,系統地、較好地掌握計算機科學與技術包括計算機硬件、軟件與應用的基本理論、基本知識和基本技能與方法,能在科研部門、教育單位、企業、事業、技術…

阿里云服務器配置開發環境第五章:Centos7.3切換為iptables防火墻

centos7.3默認使用的防火墻應該是firewall,而不是iptables。而我們xxmj服務器使用的是iptables防火墻。所以,在配置防火墻之前,我們需要先關閉firewall,安裝iptables。 1.關閉firewall service firewalld stop systemctl disable …

mba學什么書_MBA的完整形式是什么?

mba學什么書MBA:工商管理碩士 (MBA: Master of Business Administration) MBA is an abbreviation of a Master of Business Administration. It is a masters degree for post-graduation in business administration. This business masters degree program is a …

Qt for Android 開發大坑

Qt for Android 開發大坑 作者: qyvlik Qt 5.5.1 這里說一說比較常見的 Qt 開發安卓的大坑。希望同學們不要做無謂的掙扎,跳過這些坑。輸入框 首當其沖的是輸入框,Qt 的輸入在安卓上表現不佳. 無法支持安卓原生的輸入法訪問 Qt 的輸入框。就是安卓輸入法…

bca ac如何聯合索引_BCA的完整形式是什么?

bca ac如何聯合索引BCA:計算機應用學士學位 (BCA: Bachelor of Computer Applications) BCA is an abbreviation of Bachelor of Computer Applications. It is a three-year undergraduate program in Computer applications. It is considered equivalent to B.Te…

path r'c test.html',robot framework - robot命令參數解析

robot 命令參數解析version > 3.0.1原文檔查看命令:robot --helprobot -h-F --extension value通過文件擴展名控制需要執行的用例。如果只執行一個文件,這個參數無效。需要執行多個擴展名時,用“:”分隔開。Examples:--extension robot-F robot:txt-N…

嘿,程序員,你該學點經濟學了!

前言: 筆者一直認為,一個好的程序員,不僅僅是代碼敲得好,其它方面的知識和能力相同非常重要。特別是隨著年齡的增長。非常多人也慢慢的往管理層發展。這個時候溝通與協調能力變得更加重要,而一些策劃,推廣方…

linux硬件配置_Linux硬件配置

linux硬件配置What sort of hardware configuration is expected to run Linux? This is a decent question; the real hardware configuration for the OS changes intermittently. The Linux Hardware?HOWTO gives a (pretty much) complete posting of hardware supported…

重郵2019計算機考研復試名單,重慶郵電大學2019年碩士研究生招生復試通知

當前2019年考研分數線已經公布,穩穩過線的同學即可全心準備復試了,中公考研小編整理了“重慶郵電大學2019年碩士研究生招生復試通知”文章,希望對大家有所幫助!各復試考生:根據《2019年重慶郵電大學碩士研究生復試工作方案》&…

Linux相關圖解隨記

01.dns解析過程02.用戶訪問網站流程03.局域網電腦上網流程04.網站架構圖解轉載于:https://blog.51cto.com/qinbin/1954149

數據庫范式5nf_第五范式(5NF)| 數據庫管理系統

數據庫范式5nfFifth normal form (5NF) is also known as project-join normal form (PJ/NF). It is designed to minimize redundancy in relational databases by separating semantically connected relationships in multiple formats to store multi-valued facts. 第五范…

量子物理 詹班 計算機,(電氣系計算機系詹班)量子物理作業答案

西南交大峨眉校區大學物理西南交大峨眉校區《大學物理》(量子物理基礎)作業6(電氣、計算機、詹班)一 選擇題1. 以一定頻率的單色光照射在某種金屬上,測出其光電流曲線在圖中用實線表示,然后保持光的頻率不變,增大照射光的強度,測出…

MySQL5.6 新特性之GTID【轉】

轉自 MySQL5.6 新特性之GTID - jyzhou - 博客園http://www.cnblogs.com/zhoujinyi/p/4717951.html 背景: MySQL5.6在5.5的基礎上增加了一些改進,本文章先對其中一個一個比較大的改進"GTID"進行說明。 概念: GTID即全局事務ID&#…