欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

優(yōu)點:

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

缺點:

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

適用場景:

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

代碼實現(xià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;
}

運行結果:

總結

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

相關文章

  • c文件匯編后函數(shù)參數(shù)傳遞的不同之處

    c文件匯編后函數(shù)參數(shù)傳遞的不同之處

    在w7 32位系統(tǒng)下把c文件匯編后,確實與mac后的差異很大??刹粌H僅是寄存器eax與rax的區(qū)別。我想說的是函數(shù)參數(shù)傳遞的不同
    2013-11-11
  • C++使用read()和write()讀寫二進制文件

    C++使用read()和write()讀寫二進制文件

    以文本形式讀寫文件和以二進制形式讀寫文件的區(qū)別,并掌握了用重載的?>>?和?<<?運算符實現(xiàn)以文本形式讀寫文件,在此基礎上,本節(jié)將講解如何以二進制形式讀寫文件
    2023-10-10
  • c++ chrono 獲取當前時間的實現(xiàn)代碼

    c++ chrono 獲取當前時間的實現(xiàn)代碼

    這篇文章主要介紹了c++ chrono 獲取當前時間的實現(xiàn)代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • C語言計算器的3種實現(xiàn)方法代碼

    C語言計算器的3種實現(xiàn)方法代碼

    這篇文章主要給大家介紹了關于C語言計算器的3種實現(xiàn)方法,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一的參考借鑒價值,需要的朋友可以參考下
    2007-01-01
  • VS2022添加代碼模板的實現(xiàn)步驟(圖文)

    VS2022添加代碼模板的實現(xiàn)步驟(圖文)

    使用代碼模板即可實現(xiàn)像內置函數(shù)那樣,只需寫幾個字母,便能提示自動補全,本文主要介紹了VS2022添加代碼模板的實現(xiàn)步驟,感興趣的可以了解一下
    2024-06-06
  • C語言求2的n次方多種方法總結

    C語言求2的n次方多種方法總結

    這篇文章主要給大家介紹了關于C語言求2的n次方多種方法的相關資料,求2的N次冪是一個常用的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • C語言基礎指針詳解教程

    C語言基礎指針詳解教程

    此處對于指針做一些簡要的介紹,作者實屬初學,寫博客也是作者學習的一個過程,難免文章中有內容理解不到位或者有不當之處,還請朋友們不吝指正,希望大家給予支持
    2021-11-11
  • 聊聊C++的mutable和volatile

    聊聊C++的mutable和volatile

    這篇文章主要介紹了C++的mutable和volatile的相關資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-09-09
  • C語言簡單實現(xiàn)門禁系統(tǒng)

    C語言簡單實現(xiàn)門禁系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言簡單實現(xiàn)門禁系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 學習C和C++的9點經驗總結

    學習C和C++的9點經驗總結

    本文給大家總結了一下我們在學習C和C++的時候的一些經驗和需要注意的事項,希望能給大家一些幫助,少走些彎路
    2015-12-12

最新評論