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

實例解析C++設計形式編程中簡略工場形式的采取

編輯:關於C++

實例解析C++設計形式編程中簡略工場形式的采取。本站提示廣大學習愛好者:(實例解析C++設計形式編程中簡略工場形式的采取)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析C++設計形式編程中簡略工場形式的采取正文


簡略工場形式中專門界說一個類來擔任創立其他類的實例,被創立的實例平日都具有配合的父類。它又稱為靜態工場辦法形式,屬於類的創立型形式。
簡略工場形式的UML類圖

簡略工場形式的法式經由過程封裝繼續來下降法式的耦合度,設計形式使得法式加倍的靈巧,易修該,易於復用。

簡略工場是在工場類中做斷定,從而發明響應的產物。


簡略工場形式的本質是由一個工場類依據傳入的參數,靜態決議應當創立哪個產物類(這些產物類繼續自一個父類或接口)的實例。
 
該形式中包括的腳色及其職責
 
1.工場(Creator)腳色
 
簡略工場形式的焦點,它擔任完成創立一切實例的外部邏輯。工場類可以被外界直接挪用,創立所需的產物對象。
 
2.籠統(Product)腳色
 
簡略工場形式所創立的一切對象的父類,它擔任描寫一切實例所共有的公共接口。
 
3.詳細產物(Concrete Product)腳色
 
是簡略工場形式的創立目的,一切創立的對象都是充任這個腳色的某個詳細類的實例。
普通來說它是籠統產物類的子類,完成了籠統產物類中界說的一切接口辦法。
 
簡略工場形式的特色:
 
簡略工場形式的創立目的,一切創立的對象都是充任這個腳色的某個詳細類的實例。
在這個形式中,工場類是全部形式的症結地點。它包括需要的斷定邏輯,可以或許依據外界給定的信息,決議畢竟應當創立哪一個詳細類的對象。用戶在應用時可以直接依據工場類去創立所需的實例,而無需懂得這些對象是若何創立和若何組織的。有益於全部軟件系統構造的優化。
不難發明,簡略工場形式的缺陷也正表現在其工場類上,因為工場類集中了一切實例的創立邏輯,所以“高內聚”方面做的其實不好。別的,當體系中的詳細產物類赓續增多時,能夠會湧現請求工場類也要做響應的修正,擴大性其實不很好。

舉個例子:有一家臨盆處置器核的廠家,它只要一個工場,可以或許臨盆兩種型號的處置器核。客戶須要甚麼樣的處置器核,必定要顯示地告知臨盆工場。
上面給出一種完成計劃。

#include <iostream>
using namespace std;

enum CoreType
{
 CORE_A,
 CORE_B
};

class SingleCore
{
public:
 virtual void Show() = 0;
};

/*
 * A 型號單核
 */
class SingleCoreA: public SingleCore
{
public:
 void Show()
 {
 cout<<"show SingleCoreA"<<endl;
 }
};

/*
 * B 型號單核
 */
class SingleCoreB: public SingleCore
{
public:
 void Show()
 {
 cout<<"show SingleCoreB"<<endl;
 }
};

/*
 * 獨一的工場,可以臨盆單核 兩種型號的處置器
 */ 
class Factory
{
public:
 SingleCore* CreateSingleCore(CoreType ctype)
 {
 switch(ctype) 
 {
 case CORE_A:
 return new SingleCoreA();

 case CORE_B:
 return new SingleCoreB();
 
 default:
 return NULL;
 }
 }
};


int main()
{
 Factory   *pstFactory;
 SingleCore *pstSingleCore;
 
 pstFactory  = new Factory();

 /*
 * 臨盆A核
 */
 pstSingleCore = pstFactory->CreateSingleCore(CORE_A);
 pstSingleCore->Show();

 system("pause");

 /*
 * 臨盆B核
 */
 pstSingleCore = pstFactory->CreateSingleCore(CORE_B);
 pstSingleCore->Show();

 /*
 * 臨盆A核
 */
 pstSingleCore = pstFactory->CreateSingleCore(CORE_A);
 pstSingleCore->Show();

 /*
 * 臨盆A核
 */
 pstSingleCore->Show();

 system("pause");

 /*
 * 臨盆B核
 */
 pstSingleCore = pstFactory->CreateSingleCore(CORE_B);
 pstSingleCore->Show();
 
 return 0;
}

運轉成果:

show SingleCoreA
請按隨意率性鍵持續. . .
show SingleCoreB
show SingleCoreA
show SingleCoreA
請按隨意率性鍵持續. . .
show SingleCoreB
Press any key to continue 

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