C# 設計形式系列教程-署理形式。本站提示廣大學習愛好者:(C# 設計形式系列教程-署理形式)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 設計形式系列教程-署理形式正文
1. 概述
為其它對象供給一種署理以掌握對這個對象的拜訪。
處理的成績:假如直接拜訪對象比擬艱苦,或直接拜訪會給應用者或體系帶來一系列成績。如許關於客戶端(挪用者)來講,就不須要直接與真實對象停止交互,消除了挪用者與真實對象的耦合。
2. 形式中的腳色
2.1 籠統實體(Subject):界說了真實實體(RealSubject)和署理(Proxy)的公共接口,如許就在任什麼時候候應用真實實體(RealSubject)的處所應用署理(Proxy)。
2.2 署理(Proxy):保留一個援用使得署理可以直接拜訪真實實體,並供給一個與Subject的接口雷同的接口,如許署理便可以取代真實實體。
2.3 真實實體(RealSubject):界說Proxy所代表的真實實體。
3. 形式解讀
3.1 署理形式的類圖
3.2 署理形式的代碼完成
3.2.1 籠統實體,界說真實實體與署理的公共接口
/// <summary> /// 籠統實體,界說真實實體與署理的公共接口 /// </summary> public interface ISubject { void Function1(); void Function2(); }
3.2.2 真實實體,真實的功效完成者
/// <summary> /// 真實實體,真實的功效完成者 /// </summary> public class RealSubject:ISubject { public void Function1() { Console.WriteLine("This is the first function."); } public void Function2() { Console.WriteLine("This is the second function."); } }
3.2.3 署理,用來掌握和拜訪真實實體
/// <summary> /// 署理,用來拜訪真實的實體 /// </summary> public class Proxy : ISubject { /// <summary> /// 保留一個真實實體,用以在署理中拜訪真實實體的功效。 /// </summary> private RealSubject realSubject; public Proxy() { realSubject = new RealSubject(); } /// <summary> /// 完成與Subject雷同的接口,現實挪用的是RealSubject的Function1() /// </summary> public void Function1() { realSubject.Function1(); } /// <summary> /// 完成與Subject雷同的接口,現實挪用的是RealSubject的Function2() /// </summary> public void Function2() { realSubject.Function2(); } }
3.2.4 客戶真個挪用
class Program { static void Main(string[] args) { // 實例化署理 ISubject subjectProxy = new Proxy(); // 經由過程署理挪用詳細功效 subjectProxy.Function1(); subjectProxy.Function2(); Console.Read(); } }
3.2.5 運轉成果
4. 形式總結
4.1 長處
4.1.1 對客戶端來講,隱蔽了真實對象的細節及龐雜性。
4.1.2 完成了客戶端(挪用者)與真實對象的松耦合。
4.1.3 長途署理使得客戶端可以拜訪在長途機械上的對象,長途機械能夠具有更好的機能與處置速度,可以疾速呼應並處置客戶端要求。
4.1.4 虛擬署理經由過程應用一個小對象來代表一個年夜對象,可以削減體系資本的消費,對體系停止優化並進步運轉速度。
4.1.5 平安署理可以掌握對真實對象的應用權限。
4.2 缺陷
4.2.1 完成署理須要而為增長一個拜訪掌握層,增長了額定任務。有的署理完成起來異常龐雜。
4.3 實用場景
4.3.1 長途署理: 為一個位於分歧地址空間的的對象供給一個當地的署理。
4.3.2 虛擬署理:假如須要創立一個消費較年夜的對象,先創立一個消費較小的對象來表現,真實對象只在須要時才被真實創立。
4.3.3 平安署理:用來掌握對真實對象的拜訪權限
4.3.4 智能指引:當挪用真實對象時,署理供給一些額定的操作。如將對象被操作的次數記載起來等。
4.3.5 緩沖署理:為某一個目的操作供給暫時的存儲空間,以便更多客戶端同享此成果。
4.3.6 防火牆署理:掩護目的不讓歹意用戶接近。
4.3.7 同步化署理:使幾個用戶能同時應用一個對象而沒有抵觸。
5. 運用舉例
5.1 長途署理;.NET的WCF的長途署理
5.2 虛擬署理;HTML圖片加載
以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。