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

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

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

抽象工廠模式

模式定義

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

模式動(dòng)機(jī)

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

UML類圖

源碼實(shí)現(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;
}

運(yùn)行結(jié)果

優(yōu)點(diǎn)

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

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

缺點(diǎn)

模式的缺點(diǎn)

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

感悟

一個(gè)程序員如果從來沒有熬夜寫程序的經(jīng)歷,不能算是一個(gè)好程序猿,因?yàn)樗麤]有癡迷過,所以他不會(huì)有大成就。

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

相關(guān)文章

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

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

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

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

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

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

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

    C++ Boost Any示例分析使用

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

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

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

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

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

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

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

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

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

    C語言簡(jiǎn)易掃雷游戲

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

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

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

最新評(píng)論

江源县| 青龙| 舞阳县| 武穴市| 舒兰市| 哈巴河县| 紫金县| 株洲县| 紫云| 工布江达县| 屏南县| 唐河县| 兴和县| 阿拉善左旗| 五台县| 沙雅县| 孟津县| 兰西县| 松江区| 博白县| 天峻县| 榆中县| 丰宁| 高邮市| 乐山市| 茌平县| 高碑店市| 堆龙德庆县| 襄垣县| 潼南县| 五原县| 无锡市| 方城县| 苗栗县| 乌拉特中旗| 中山市| 景宁| 栾城县| 温州市| 木兰县| 奉新县|