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

應用署理形式來停止C#設計形式開辟的基本教程

編輯:C#入門知識

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


1、概述
在軟件開辟中,有些對象因為創立本錢高、拜訪時須要與其它過程交互等緣由,直接拜訪會形成體系速度慢、龐雜度增年夜等成績。這時候可使用署理形式,給體系增長一層直接層,經由過程直接層拜訪對象,從而到達隱蔽體系龐雜性、進步體系機能的目標。
2、署理形式的具體引見
署理形式為其他對象供給一種署理以掌握對這個對象的拜訪。其構造圖以下:

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810344561.gif (405×252)

Subject界說了RealSubject和Proxy共用的接口,使得在任何應用RealSubject的處所都可使用Proxy
RealSubject界說了Proxy所代表的實體。
Proxy界說了一個掌握RealSubject的署理,供Client應用。
署理形式依照應用目標可以分為以下幾種:

  • 長途(Remote)署理:為一個位於分歧的地址空間的對象供給一個局域代表對象。這個分歧的地址空間可所以本電腦中,也能夠在另外一台電腦中。最典范的例子就是——客戶端挪用Web辦事或WCF辦事。
  • 虛擬(Virtual)署理:依據須要創立一個資本消費較年夜的對象,使得對象只在須要時才會被真正創立。
  • Copy-on-Write署理:虛擬署理的一種,把復制(或許叫克隆)遷延到只要在客戶端須要時,才真正采用行為。
  • 掩護(Protect or Access)署理:掌握一個對象的拜訪,可以給分歧的用戶供給分歧級其余應用權限。
  • 防火牆(Firewall)署理:掩護目的不讓歹意用戶接近。
  • 智能援用(Smart Reference)署理:當一個對象被援用時,供給一些額定的操作,好比將對此對象挪用的次數記載上去等。
  • Cache署理:為某一個目的操作的成果供給暫時的存儲空間,以便多個客戶端可以這些成果。

在下面一切品種的署理形式中,虛擬署理、長途署理、智能援用署理和掩護署理較為罕見的署理形式。上面讓我們詳細看看署理形式的詳細界說。

2.1 界說
署理形式——就是給某一個對象供給一個署理,並由署理對象掌握對原對象的援用。在一些情形下,一個客戶不想或許不克不及直接援用一個對象,而署理對象可以在客戶端和目的對象之間起到中介的感化。例如電腦桌面的快捷方法就是一個署理對象,快捷方法是它所援用的法式的一個署理。

2.2 署理形式完成
看完署理形式的描寫以後,上面以一個生涯中的例子來說明下署理形式,在實際生涯中,假如有同事出國或許同伙出國的情形下,我們常常會拖這位同伙協助帶一些電子產物或化裝品等器械,這個場景中,出國的同伙就是一個署理,他(她)是他(她)同伙的一個署理,因為他同伙不克不及去國外買器械,他卻可以,所以同伙們都托他協助帶一些器械的。上面就以這個場景來完成下署理形式,詳細代碼以下:

// 客戶端挪用
  class Client
  {
    static void Main(string[] args)
    {
      // 創立一個署理對象並收回要求
      Person proxy = new Friend();
      proxy.BuyProduct();
      Console.Read();
    }
  }
  // 籠統主題腳色
  public abstract class Person
  {
    public abstract void BuyProduct();
  }
  //真實主題腳色
  public class RealBuyPerson : Person
  {
    public override void BuyProduct()
    {
      Console.WriteLine("幫我買一個IPhone和一台蘋果電腦");
    }
  }
  // 署理腳色
  public class Friend:Person
  {
    // 援用真實主題實例
    RealBuyPerson realSubject;
    public override void BuyProduct()
    {
      Console.WriteLine("經由過程署理類拜訪真實實體對象的辦法");
      if (realSubject == null)
      {
        realSubject = new RealBuyPerson();
      }
      this.PreBuyProduct();
      // 挪用真實主題辦法
      realSubject.BuyProduct();
      this.PostBuyProduct();
    }
    // 署理腳色履行的一些操作
    public void PreBuyProduct()
    {
      // 能夠不知一個同伙叫這位同伙帶器械,起首這位出國的同伙要對每位同伙要帶的器械列一個清單等
      Console.WriteLine("我怕弄懵懂了,須要列一張清單,張三:要帶相機,李四:要帶Iphone...........");
    }
             
    // 買完器械以後,署理腳色須要針對每位同伙須要的對買來的器械停止分類
    public void PostBuyProduct()
    {
      Console.WriteLine("終究買完了,如今要對器械分一下,相機是張三的;Iphone是李四的..........");
    }
  }

在下面的代碼中都有響應的正文,這裡也不多說明了。

3、署理形式的優缺陷
周全剖析完署理形式以後,讓我們看看這個形式的優缺陷:

長處:

署理形式可以或許將挪用用於真正被挪用的對象隔離,在必定水平上下降了體系的耦合度;
署理對象在客戶端和目的對象之間起到一個中介的感化,如許可以起到對目的對象的掩護。署理對象可以在對目的對象收回要求之進步行一個額定的操作,例如權限檢討等。
缺陷:

因為在客戶端和真實主題之間增長了一個署理對象,所以會形成要求的處置速度變慢
完成署理類也須要額定的任務,從而增長了體系的完成龐雜度。

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