程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 設計形式系列教程-署理形式

C# 設計形式系列教程-署理形式

編輯:C#入門知識

C# 設計形式系列教程-署理形式。本站提示廣大學習愛好者:(C# 設計形式系列教程-署理形式)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 設計形式系列教程-署理形式正文


1. 概述

  為其它對象供給一種署理以掌握對這個對象的拜訪。

  處理的成績:假如直接拜訪對象比擬艱苦,或直接拜訪會給應用者或體系帶來一系列成績。如許關於客戶端(挪用者)來講,就不須要直接與真實對象停止交互,消除了挪用者與真實對象的耦合。

2. 形式中的腳色

  2.1 籠統實體(Subject):界說了真實實體(RealSubject)和署理(Proxy)的公共接口,如許就在任什麼時候候應用真實實體(RealSubject)的處所應用署理(Proxy)。

  2.2 署理(Proxy):保留一個援用使得署理可以直接拜訪真實實體,並供給一個與Subject的接口雷同的接口,如許署理便可以取代真實實體。

  2.3 真實實體(RealSubject):界說Proxy所代表的真實實體。

3. 形式解讀

  3.1 署理形式的類圖

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810423993.png

  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 運轉成果

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810423935.png  

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圖片加載

以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved