最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++設(shè)計模式之抽象工廠模式

 更新時間:2020年07月21日 16:47:21   作者:鬼谷子com  
這篇文章主要介紹了C++設(shè)計模式之抽象工廠模式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

抽象工廠模式

模式定義

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

模式動機

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

UML類圖

源碼實現(xiàn)

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;
}

運行結(jié)果

優(yōu)點

抽象工廠模式的優(yōu)點

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

缺點

模式的缺點

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

感悟

一個程序員如果從來沒有熬夜寫程序的經(jīng)歷,不能算是一個好程序猿,因為他沒有癡迷過,所以他不會有大成就。

到此這篇關(guān)于C++設(shè)計模式實現(xiàn)抽象工廠模式的文章就介紹到這了,更多相關(guān)C++ 抽象工廠模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++生成不重復(fù)的隨機整數(shù)

    C++生成不重復(fù)的隨機整數(shù)

    這篇文章主要為大家詳細介紹了C++生成不重復(fù)的隨機整數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • VC++實現(xiàn)選擇排序算法簡單示例

    VC++實現(xiàn)選擇排序算法簡單示例

    這篇文章主要介紹了VC++實現(xiàn)選擇排序算法簡單示例,代碼簡潔易懂,有助于讀者對數(shù)據(jù)結(jié)構(gòu)與算法的學(xué)習(xí),需要的朋友可以參考下
    2014-08-08
  • C++實現(xiàn)的鏈表類實例

    C++實現(xiàn)的鏈表類實例

    這篇文章主要介紹了C++實現(xiàn)的鏈表類,以完整實例分析了C++實現(xiàn)鏈表類的定義、插入、刪除、遍歷、統(tǒng)計等相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++ Boost Any示例分析使用

    C++ Boost Any示例分析使用

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 內(nèi)部排序之堆排序的實現(xiàn)詳解

    內(nèi)部排序之堆排序的實現(xiàn)詳解

    本篇文章是對堆排序的實現(xiàn)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言獲取消耗內(nèi)存的方法

    C語言獲取消耗內(nèi)存的方法

    這篇文章主要介紹了C語言獲取消耗內(nèi)存的方法,涉及C語言中malloc方法的使用技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • C語言軟件spi虛擬總線中間層設(shè)計詳解

    C語言軟件spi虛擬總線中間層設(shè)計詳解

    這篇文章主要為大家介紹了C語言軟件spi虛擬總線中間層設(shè)計詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • C++中 靜態(tài)局部變量實例詳解

    C++中 靜態(tài)局部變量實例詳解

    這篇文章主要介紹了C++中 靜態(tài)局部變量實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C語言簡易掃雷游戲

    C語言簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C語言簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言格式輸出二進制的2種方法總結(jié)

    C語言格式輸出二進制的2種方法總結(jié)

    眾所周知C中以八進制,十進制和十六進制都可以通過%o,%d和%x輕松實現(xiàn),然而唯獨沒有提供二進制輸出的快速方式,下面這篇文章主要給大家介紹了關(guān)于C語言格式輸出二進制的2種方法,需要的朋友可以參考下
    2022-08-08

最新評論

靖边县| 林西县| 永胜县| 从化市| 筠连县| 万州区| 福贡县| 沧源| 客服| 晋宁县| 元阳县| 岗巴县| 谷城县| 平舆县| 鄂伦春自治旗| 永川市| 晋宁县| 枝江市| 阿拉善右旗| 农安县| 页游| 清远市| 林西县| 汕尾市| 长治市| 乡城县| 泊头市| 富源县| 大兴区| 修水县| 中超| 宣城市| 澜沧| 瑞安市| 理塘县| 军事| 广水市| 玛多县| 安泽县| 三门峡市| 介休市|