国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

彩票代購網(wǎng)站建設(shè)百度怎么注冊自己的店鋪

彩票代購網(wǎng)站建設(shè),百度怎么注冊自己的店鋪,wordpress如何去掉amp:,中核二二是個好單位嗎作者:翟天保Steven 版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處 一、抽象工廠模式是什么? 抽象工廠模式是一種創(chuàng)建型的軟件設(shè)計(jì)模式,該模式相當(dāng)于升級版的工廠模式。 如果…

作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處

一、抽象工廠模式是什么?

? ? ? ?抽象工廠模式是一種創(chuàng)建型的軟件設(shè)計(jì)模式,該模式相當(dāng)于升級版的工廠模式。

? ? ? ?如果說工廠模式對應(yīng)一個產(chǎn)品系列,那抽象工廠就對應(yīng)了多個產(chǎn)品系列。比如工廠模式中有鞋子、衣服和褲子可以生產(chǎn),那抽象工廠模式就會衍生出耐克工廠和阿迪工廠,這兩個工廠分別生產(chǎn)各自品牌的鞋子、衣服和褲子,客戶只需要選擇具體工廠和想要的產(chǎn)品即可。如果想要替換產(chǎn)品系列,也只需要將具體工廠切換為別的品牌就行了。

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

  1. 具體類分離。具體產(chǎn)品類在具體工廠的實(shí)現(xiàn)中進(jìn)行了分離和歸類。
  2. 易于更換產(chǎn)品族。當(dāng)客戶想要改變整個產(chǎn)品族時,只需要切換具體工廠即可。
  3. 利于產(chǎn)品一致性。當(dāng)產(chǎn)品族的各個產(chǎn)品需要在一起執(zhí)行時,抽象工廠可以確??蛻糁徊僮魍盗挟a(chǎn)品,而不會進(jìn)行跨品牌的組合。

? ? ? 抽象工廠模式的缺點(diǎn):

  1. 不利于添加新種類產(chǎn)品。每加一個新的種類,如多一個項(xiàng)鏈類型的產(chǎn)品,那每一個具體工廠都要進(jìn)行代碼的擴(kuò)展,且破壞了原先規(guī)定的結(jié)構(gòu),違反了開閉原則。

二、抽象工廠模式

2.1 結(jié)構(gòu)圖

? ? ? ?客戶端即Main主函數(shù),選擇具體工廠(族),通過該工廠產(chǎn)生該系列下的具體產(chǎn)品(蘋果和香蕉),切換具體工廠,產(chǎn)生新系列的具體產(chǎn)品。

2.2 代碼示例

? ? ? ?場景描述:我聯(lián)系了一家中國工廠,品嘗該廠的蘋果和香蕉,吃完后又找到一家美國工廠,品嘗他家的蘋果和香蕉,對比下口感。

//Prodect.h
/****************************************************/
#pragma once
#include <iostream>using namespace std;// 抽象產(chǎn)品類
class Prodect
{
public:// 構(gòu)造函數(shù)Prodect(int price) :m_price(price) {};// 析構(gòu)函數(shù)virtual ~Prodect() {};// 獲取價(jià)格int getPrice() {return m_price;}
protected:// 產(chǎn)品價(jià)格int m_price;
};// 抽象產(chǎn)品細(xì)分-蘋果
class AppleProdect : public Prodect
{
public:// 構(gòu)造函數(shù)AppleProdect(int price, string color) :Prodect(price), m_color(color) {};// 析構(gòu)函數(shù)virtual ~AppleProdect() {};// 獲取顏色string getColor() {return m_color;}
protected:// 顏色string m_color;
};// 抽象產(chǎn)品細(xì)分-香蕉
class BananaProdect : public Prodect
{
public:// 構(gòu)造函數(shù)BananaProdect(int price) :Prodect(price) {};// 析構(gòu)函數(shù)virtual ~BananaProdect() {};
};// 具體產(chǎn)品-中國蘋果
class ChineseAppleProdect : public AppleProdect
{
public:// 構(gòu)造函數(shù)ChineseAppleProdect(int price, string color) :AppleProdect(price, color) {cout << "獲得了一個中國蘋果。" << endl;};// 析構(gòu)函數(shù)virtual ~ChineseAppleProdect() {cout << "吃掉了一個中國蘋果。" << endl;};
};// 具體產(chǎn)品-美國蘋果
class AmericanAppleProdect : public AppleProdect
{
public:// 構(gòu)造函數(shù)AmericanAppleProdect(int price, string color) :AppleProdect(price, color) {cout << "獲得了一個美國蘋果。" << endl;};// 析構(gòu)函數(shù)virtual ~AmericanAppleProdect() {cout << "吃掉了一個美國蘋果。" << endl;};
};// 具體產(chǎn)品-中國香蕉
class ChineseBananaProdect : public BananaProdect
{
public:// 構(gòu)造函數(shù)ChineseBananaProdect(int price) :BananaProdect(price) {cout << "獲得了一個中國香蕉。" << endl;};// 析構(gòu)函數(shù)virtual ~ChineseBananaProdect() {cout << "吃掉了一個中國香蕉。" << endl;};
};// 具體產(chǎn)品-美國香蕉
class AmericanBananaProdect : public BananaProdect
{
public:// 構(gòu)造函數(shù)AmericanBananaProdect(int price) :BananaProdect(price) {cout << "獲得了一個美國香蕉。" << endl;};// 析構(gòu)函數(shù)virtual ~AmericanBananaProdect() {cout << "吃掉了一個美國香蕉。" << endl;};
};
//Factory.h
/****************************************************/
#pragma once
#include <iostream>
#include "Prodect.h"using namespace std;// 抽象工廠類
class Factory
{
public:// 獲取蘋果virtual Prodect* getApple() = 0;// 獲取香蕉virtual Prodect* getBanana() = 0;
};// 具體工廠類-中國工廠
class ChineseFactory : public Factory
{
public:// 獲取蘋果virtual Prodect* getApple() {Prodect* prodect = new ChineseAppleProdect(5, "紅");return prodect;}// 獲取香蕉virtual Prodect* getBanana() {Prodect* prodect = new ChineseBananaProdect(3);return prodect;}
};// 具體工廠類-美國工廠
class AmericanFactory : public Factory
{
public:// 獲取產(chǎn)品virtual Prodect* getApple() {Prodect* prodect = new AmericanAppleProdect(4, "黑");return prodect;}// 獲取香蕉virtual Prodect* getBanana() {Prodect* prodect = new AmericanBananaProdect(2);return prodect;}
};
//main.cpp
/****************************************************/
#include <iostream>
#include <string>
#include "Factory.h"
#include "Prodect.h"using namespace std;int main()
{cout << "找到中國工廠。" << endl;Factory* factoryA = new ChineseFactory();Prodect *A = factoryA->getApple();Prodect *B = factoryA->getBanana();int applePrice = A->getPrice();int bananaPrice = B->getPrice();int sum = A->getPrice() + B->getPrice();cout << "蘋果價(jià)格:" << applePrice << "元。" << endl;cout << "香蕉價(jià)格:" << bananaPrice << "元。" << endl;cout << "累計(jì)消費(fèi):" << sum << "元。" << endl;cout << "中國蘋果" << dynamic_cast<AppleProdect*>(A)->getColor() << "色" << endl;delete A;delete B;delete factoryA;cout << "享用完畢。" << endl << endl;cout << "找到美國工廠。" << endl;Factory* factoryB = new AmericanFactory();Prodect *C = factoryB->getApple();Prodect *D = factoryB->getBanana();applePrice = C->getPrice();bananaPrice = D->getPrice();sum = C->getPrice() + D->getPrice();cout << "蘋果價(jià)格:" << applePrice << "元。" << endl;cout << "香蕉價(jià)格:" << bananaPrice << "元。" << endl;cout << "累計(jì)消費(fèi):" << sum << "元。" << endl;cout << "美國蘋果" << dynamic_cast<AppleProdect*>(C)->getColor() << "色" << endl;delete C;delete D;delete factoryB;cout << "享用完畢。不如China。" << endl;return 0;
}

? ? ? ?程序結(jié)果如下。

? ? ? ? 在上述示例中,我們可以看到,這兩個工廠都有同樣的系列產(chǎn)品(蘋果和香蕉),我想體驗(yàn)新的系列產(chǎn)品,只需要更換具體工廠即可。

三、總結(jié)

? ? ? ?我盡可能用較通俗的話語和直觀的代碼例程,來表述我對抽象工廠模式的理解,或許有考慮不周到的地方,如果你有不同看法歡迎評論區(qū)交流!希望我舉的例子能幫助你更好地理解抽象工廠模式。

? ? ? ?如果文章幫助到你了,可以點(diǎn)個贊讓我知道,我會很快樂~加油!

http://m.aloenet.com.cn/news/40046.html

相關(guān)文章:

  • 做電影平臺網(wǎng)站怎么賺錢的什么是網(wǎng)絡(luò)營銷平臺
  • wordpress主頁居中重慶seo俱樂部
  • 焦作專業(yè)做網(wǎng)站公司中國新聞發(fā)布
  • wordpress 個性化韶山百度seo
  • 桐鄉(xiāng)網(wǎng)站建設(shè)世界十大網(wǎng)站排名出爐
  • 高明專業(yè)網(wǎng)站建設(shè)報(bào)價(jià)青海百度關(guān)鍵詞seo
  • 網(wǎng)站制作需要平臺培訓(xùn)心得體會總結(jié)
  • 網(wǎng)站建設(shè)專企業(yè)站seo價(jià)格
  • 網(wǎng)站建設(shè)種類 優(yōu)幫云海外網(wǎng)站推廣優(yōu)化專員
  • 可信賴的南昌網(wǎng)站制作seo是付費(fèi)還是免費(fèi)推廣
  • 商城網(wǎng)站合同網(wǎng)站的優(yōu)化
  • wordpress 側(cè)邊懸浮塊鄭州谷歌優(yōu)化外包
  • web網(wǎng)站開發(fā)全過程網(wǎng)站內(nèi)鏈優(yōu)化
  • 做網(wǎng)站的流程方法上海排名優(yōu)化推廣工具
  • 網(wǎng)站的設(shè)計(jì)與維護(hù)摘要搜易網(wǎng)優(yōu)化的效果如何
  • 國家和省對政府網(wǎng)站建設(shè)要求做網(wǎng)絡(luò)推廣要學(xué)些什么
  • 關(guān)于門戶網(wǎng)站建設(shè)通報(bào)google chrome谷歌瀏覽器
  • 成都it培訓(xùn)機(jī)構(gòu)優(yōu)化網(wǎng)絡(luò)搜索引擎
  • 門戶網(wǎng)站快速制作佛山網(wǎng)站建設(shè)維護(hù)
  • css網(wǎng)站開發(fā)實(shí)錄新聞稿發(fā)布軟文平臺
  • 貴陽專業(yè)做網(wǎng)站公司高端網(wǎng)站設(shè)計(jì)公司
  • 商城網(wǎng)站制作方案100個免費(fèi)推廣網(wǎng)站
  • 網(wǎng)站建設(shè) 天津國內(nèi)軍事新聞最新消息
  • 能免費(fèi)做網(wǎng)站嗎信息流廣告模板
  • 成都定制企業(yè)網(wǎng)站制作免費(fèi)學(xué)生網(wǎng)頁制作成品代碼
  • 專業(yè)手機(jī)網(wǎng)站制作公司網(wǎng)站快速排名服務(wù)商
  • 做網(wǎng)站開發(fā)人員架構(gòu)市場營銷
  • win7如何做網(wǎng)站建立自己的網(wǎng)站平臺
  • 鋼管網(wǎng)站模板國外搜索引擎大全不屏蔽
  • 學(xué)做川菜的網(wǎng)站站長工具whois查詢