程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 淺析設計形式中的署理形式在C++編程中的應用

淺析設計形式中的署理形式在C++編程中的應用

編輯:關於C++

淺析設計形式中的署理形式在C++編程中的應用。本站提示廣大學習愛好者:(淺析設計形式中的署理形式在C++編程中的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析設計形式中的署理形式在C++編程中的應用正文


由碰到的成績引出署理形式

至多在以下集中情形下可以用署理形式處理成績:

  • 創立開支年夜的對象時刻,好比顯示一幅年夜的圖片,我們將這個創立的進程交給署理去完成,GoF 稱之為虛署理(Virtual Proxy);
  • 為收集上的對象創立一個部分的當地署理,好比要操作一個收集上的一個對象(收集機能欠好的時刻,成績特別凸起),我們將這個把持的進程交給一個署理去完成,GoF 稱之為長途署理(Remote Proxy);
  • 對對象停止掌握拜訪的時刻,好比在 Jive 服裝論壇t.vhao.net中分歧權限的用戶(如治理員、通俗用戶等)將取得分歧條理的操作權限,我們將這個任務交給一個署理去完成,GoF 稱之為掩護署理(Protection Proxy)。

UML 圖:

腳色:

  •        Subject: 籠統腳色。聲明真實對象和署理對象的配合接口。
  •        Proxy: 署理腳色。署理對象與真實對象完成雷同的接口,所以它可以或許在任什麼時候刻都可以或許署理真實對象。署理腳色外部包括有對真實對象的援用,所以她可以操作真實對象,同時也能夠附加其他的操作,相當於對真實對象停止封裝。
  •        RealSubject: 真實腳色。它代表著真實對象,是我們終究要援用的對象

舉例:
   假若你有一個工場開端是臨盆手機的,然則它如今不想本身臨盆了,它把本身的器械交給了一家代工場富士康去臨盆,那末便有了上面的代碼去構建。

同一的籠統接口 IFactory

class IFactory 
{ 
public: 
  IFactory(){} 
  virtual void makeProduct() = 0; 
}; 

你的手機工場

class PhoneFactory : IFactory 
{ 
public: 
  PhoneFactory(){} 
  void makeProduct() 
  { 
    cout<<"臨盆手機"<<endl; 
  } 
}; 

專門做代工的署理工場富士康

class FoxconnProxy : IFactory 
{ 
public: 
  FoxconnProxy(IFactory* factory) 
  { 
    m_real = factory; 
  } 
  void makeProduct() 
  { 
    m_real->makeProduct(); 
  } 
private: 
  IFactory* m_real; 
}; 

客戶端:

IFactory* factory = new PhoneFactory(); 
FoxconnProxy* proxy = new FoxconnProxy(factory); 
proxy->makeProduct(); 


    看了uml圖和下面的代碼你會能夠會發明,先拜訪署理類再拜訪真正要拜訪的對象。仿佛如許有點畫蛇添足的滋味,其實否則。署理類可以在真實的類履行之前,停止預處置。 比富士康臨盆的手機之前能夠會保持元器件能否及格,不及格就不臨盆等。在好比你有一個體系完成了上岸功效,在用戶登錄時, 真實的登錄類和署理登錄類都完成了Login接口, 分歧的是Proxy類的辦法中增長了用戶能否正當的斷定, 只要正當時才去挪用真正登錄類的login辦法. 用戶拜訪的實際上是Proxy的login辦法.這都是署理形式的長處。並且采取署理形式的話,而且你可以隨時更改署理。還有一點你會發明,真正對象與署理他們完成統一個接口。
   這個形式和裝潢者形式有點相似的地方,都是包裝,然則請留意他們運用場景紛歧樣:一個是靜態的給類添加職責,一個是掌握對這個對象的拜訪。最主要的一點分歧是他們的構造分歧,你比較下兩個形式的uml圖便知。

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