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

C++設(shè)計模式之工廠方法模式的實現(xiàn)及優(yōu)缺點

 更新時間:2021年06月04日 15:15:24   作者:WhiteShirtI  
工廠方法模式是一個創(chuàng)建型設(shè)計模式,通過定義一個創(chuàng)建對象的接口,讓其子類決定實例化哪一個工廠類,這篇文章主要給大家介紹了關(guān)于C++設(shè)計模式之工廠方法模式的實現(xiàn)及優(yōu)缺點,需要的朋友可以參考下

工廠方法模式是在簡單工廠模式的缺點上進行優(yōu)化的,我們都知道,在簡單工廠模式中,要去增加或者減少一個產(chǎn)品的類型,都需要修改工廠中的if-else判斷。這樣子顯然不符合我們代碼開發(fā)中的開閉原則,拓展起來也是非常麻煩的

工廠方法模式 = 簡單工廠模式 + “開閉原則”

定義思想:工廠父類負(fù)責(zé)定義創(chuàng)建產(chǎn)品對象的公共接口,而工廠子類則負(fù)責(zé)生成具體的產(chǎn)品對象,這樣做的目的就是將產(chǎn)品類的實例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應(yīng)該實例化哪一個具體產(chǎn)品類

優(yōu)點:

  • 不需要記住具體的類名,甚至連具體參數(shù)都不需要記住
  • 實現(xiàn)了對象創(chuàng)建和使用的分離
  • 系統(tǒng)的可擴展性變得更好,符合開閉原則

缺點:

系統(tǒng)中的類是成對增加,增加了系統(tǒng)的復(fù)雜度和理解度

適用場景:

  • 客戶端不需要知道具體產(chǎn)品類的名字,只需要知道其所對應(yīng)的工廠即可
  • 不關(guān)心類的創(chuàng)建和實現(xiàn)的細(xì)節(jié)

代碼實現(xiàn):(手機產(chǎn)品)

//抽象手機
class AbstractPhone
{
public:
	virtual void ShowName() = 0;
};

//華為
class Huawei : public AbstractPhone
{
public:
	virtual void ShowName()
	{
		cout << "Huawei Phone" << endl;
	}
};

//小米
class Xiaomi : public AbstractPhone
{
public:
	virtual void ShowName()
	{
		cout << "Xiaomi Phone" << endl;
	}
};

//蘋果
class Apple : public AbstractPhone
{
public:
	virtual void ShowName()
	{
		cout << "Apple Phone" << endl;
	}
};

//抽象工廠
class AbstractPhoneFactory
{
public:
	virtual AbstractPhone* CreatePhone() = 0;
};

//華為工廠
class HuaweiFactory : public AbstractPhoneFactory
{
public:
	virtual AbstractPhone* CreatePhone()
	{
		return new Huawei();
	}
};

//小米工廠
class XiaomiFactory : public AbstractPhoneFactory
{
public:
	virtual AbstractPhone* CreatePhone()
	{
		return new Xiaomi();
	}
};

//蘋果工廠
class AppleFactory : public AbstractPhoneFactory
{
public:
	virtual AbstractPhone* CreatePhone()
	{
		return new Apple();
	}
};

測試:

void test()
{
	//創(chuàng)建一個工廠
	AbstractPhoneFactory* factory = nullptr;
	//創(chuàng)建一個手機
	AbstractPhone* phone = nullptr;

	//指定工廠是華為工廠
	factory = new HuaweiFactory;
	//通過華為工廠創(chuàng)建一個手機
	phone = factory->CreatePhone();
	phone->ShowName();

	delete phone;
	delete factory;

	factory = new XiaomiFactory;
	phone = factory->CreatePhone();
	phone->ShowName();

	delete phone;
	delete factory;

	factory = new AppleFactory;
	phone = factory->CreatePhone();
	phone->ShowName();

	delete phone;
	delete factory;
}

運行結(jié)果:

總結(jié)

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

相關(guān)文章

  • 使用matlab繪制七夕表白玫瑰花束

    使用matlab繪制七夕表白玫瑰花束

    又是一年七夕節(jié)要到了,每年一次直男審美MATLAB繪圖大賽開始了,于是今年對我之前寫的老代碼進行了點優(yōu)化組合,整了個花球變花束,感興趣的小伙伴可以動手試一試
    2023-08-08
  • Qt中利用QTextBrowser控件設(shè)計日志窗口

    Qt中利用QTextBrowser控件設(shè)計日志窗口

    本文主要介紹了Qt中利用QTextBrowser控件設(shè)計日志窗口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • C語言位運算和sizeof運算符詳解

    C語言位運算和sizeof運算符詳解

    這篇文章主要介紹了C語言位運算和sizeof運算符詳解的相關(guān)資料,這里提供了詳細(xì)的知識要點,并附簡單代碼示例,需要的朋友可以參考下
    2016-11-11
  • C語言+MySQL實現(xiàn)推箱子游戲

    C語言+MySQL實現(xiàn)推箱子游戲

    經(jīng)典的推箱子是一個來自日本的古老游戲,目的是在訓(xùn)練你的邏輯思考能力。本文將通過C語言和MySQL實現(xiàn)推箱子這一經(jīng)典游戲,感興趣的可以了解一下
    2022-02-02
  • QT實現(xiàn)定時關(guān)閉消息提示框

    QT實現(xiàn)定時關(guān)閉消息提示框

    這篇文章主要介紹了軟件利用Qt簡單實現(xiàn)消息提示框可定時自動關(guān)閉,文中的示例代碼講解詳細(xì),對我們;了解QT有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • C++中判斷成員函數(shù)是否重寫

    C++中判斷成員函數(shù)是否重寫

    這篇文章主要介紹了C++中判斷成員函數(shù)是否重寫的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • C語言代碼實現(xiàn)2048游戲

    C語言代碼實現(xiàn)2048游戲

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實現(xiàn)2048游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++中的復(fù)制構(gòu)造函數(shù)詳解

    C++中的復(fù)制構(gòu)造函數(shù)詳解

    今天小編就為大家分享一篇關(guān)于關(guān)于C++復(fù)制構(gòu)造函數(shù)的實現(xiàn)講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • C++示例講解觀察者設(shè)計模式

    C++示例講解觀察者設(shè)計模式

    觀察者模式是極其重要的一個設(shè)計模式,也是我?guī)啄觊_發(fā)過程中使用最多的設(shè)計模式,本文首先概述觀察者模式的基本概念和Demo實現(xiàn),接著是觀察者模式在C++中的應(yīng)用,最后是對觀察者模式的應(yīng)用場景和優(yōu)缺點進行總結(jié)
    2022-12-12
  • C++、python和go語言實現(xiàn)的簡單客戶端服務(wù)器代碼示例

    C++、python和go語言實現(xiàn)的簡單客戶端服務(wù)器代碼示例

    這篇文章主要介紹了C++、python和go語言實現(xiàn)的簡單客戶端服務(wù)器代碼示例,本文分別給出了3種語言的客戶端服務(wù)器通信代碼實例,需要的朋友可以參考下
    2015-03-03

最新評論

鄂伦春自治旗| 鄂尔多斯市| 天全县| 保靖县| 建昌县| 河间市| 上蔡县| 新巴尔虎左旗| 金平| 蒲江县| 民勤县| 孙吴县| 句容市| 安吉县| 涡阳县| 方正县| 大庆市| 都兰县| 顺义区| 贵德县| 昌黎县| 沙坪坝区| 西安市| 罗城| 汾西县| 泸西县| 金溪县| 商水县| 淮安市| 湄潭县| 晋中市| 武穴市| 兴和县| 惠州市| 乌什县| 德格县| 灵台县| 阜新| 荥经县| 临西县| 东丰县|