淺析設計形式中的署理形式在C++編程中的應用。本站提示廣大學習愛好者:(淺析設計形式中的署理形式在C++編程中的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析設計形式中的署理形式在C++編程中的應用正文
由碰到的成績引出署理形式
至多在以下集中情形下可以用署理形式處理成績:
UML 圖:
腳色:
舉例:
假若你有一個工場開端是臨盆手機的,然則它如今不想本身臨盆了,它把本身的器械交給了一家代工場富士康去臨盆,那末便有了上面的代碼去構建。
同一的籠統接口 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圖便知。