91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++設計模式之抽象工廠模式的詳細解析

發布時間:2020-07-21 17:26:15 來源:億速云 閱讀:271 作者:小豬 欄目:開發技術

這篇文章主要講解了C++設計模式之抽象工廠模式的詳細解析,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

抽象工廠模式

模式定義

抽象工廠模式(Abstract Factory),提供一個創建一系列相關或相互依賴對象的接口,而無需指定他們具體的類。

模式動機

通常是在運行時刻在創建一個ConcreteFactory類的實例,這個具體的工廠再創建具有特定實現的產品對象,也就是說,為創建不同的產品對象,客戶端應使用不同的具體工廠。

UML類圖

C++設計模式之抽象工廠模式的詳細解析

源碼實現

abstractproducta.h

#include <string>

class AbstracProductA
{
public:
 AbstracProductA();
 virtual ~AbstracProductA();

 void Show();
 virtual std::string Name();
};

class ConcreteProductA1 : public AbstracProductA
{
public:
 ConcreteProductA1();
 std::string Name() override;
};

class ConcreteProductA2 : public AbstracProductA
{
public:
 ConcreteProductA2();
 std::string Name() override;
};

abstractfactory.h

#include "abstracproducta.h"
#include "abstracproductb.h"

class AbstractFactory
{
public:
 AbstractFactory();
 virtual ~AbstractFactory();

 virtual AbstracProductA* CreateProductA() = 0;
 virtual AbstracProductB* CreateProductB() = 0;
};

class ConcreteFactory1 : public AbstractFactory
{
public:
 ConcreteFactory1();

 AbstracProductA* CreateProductA() override;
 AbstracProductB* CreateProductB() override;
};

class ConcreteFactory2 : public AbstractFactory
{
public:
 ConcreteFactory2();

 AbstracProductA* CreateProductA() override;
 AbstracProductB* CreateProductB() override;
};

main.cpp

#include <iostream>
#include "abstractfactory.h"
#include "abstracproducta.h"
#include "abstracproductb.h"

using namespace std;

int main()
{
 AbstractFactory* factory1 = new ConcreteFactory1();
 AbstracProductA* pA1 = factory1->CreateProductA();
 AbstracProductB* pB1 =factory1->CreateProductB();

 pA1->Show();
 pB1->Show();

 AbstractFactory* factory2 = new ConcreteFactory2();
 AbstracProductA* pA2 = factory2->CreateProductA();
 AbstracProductB* pB2 =factory2->CreateProductB();

 pA2->Show();
 pB2->Show();

 return 0;
}

運行結果

優點

抽象工廠模式的優點

  • 好處是易于交換產品系列,由于具體工廠類,在一個應用中只需要在初始化的時候出現一次,這就使得該百年一個應用的具體工廠變得非常容易,它只需要改變具體工廠即可使用不同的產品配置。
  • 它讓具體的創建實例過程與客戶端分離,客戶端是通過它們的抽象接口操縱實例,產品的具體類名也被具體工廠的實現分離,不會出現在客戶代碼中。

缺點

模式的缺點

  • 所有在用簡單工廠的地方,都可以考慮用反射技術來去除switch或if,接觸分支判斷帶來的耦合。

看完上述內容,是不是對C++設計模式之抽象工廠模式的詳細解析有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南宫市| 繁昌县| 长武县| 工布江达县| 安陆市| 右玉县| 海南省| 高平市| 塔河县| 噶尔县| 秀山| 抚州市| 宁陕县| 红桥区| 兰考县| 夹江县| 临泉县| 遂平县| 小金县| 阳朔县| 湘乡市| 郴州市| 安远县| 汪清县| 高碑店市| 调兵山市| 延寿县| 温宿县| 县级市| 新闻| 南城县| 芦山县| 阿坝县| 阳城县| 马山县| 司法| 利津县| 布尔津县| 万源市| 自治县| 宁明县|