设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)
生活随笔
收集整理的這篇文章主要介紹了
设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
抽象工廠模式
抽象工廠模式的概念
抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最其一般性的。抽象工廠模式可以向 客戶端提供一個接口,使得客戶端在不必指定產(chǎn)品的具體類型的情況下,能夠創(chuàng)建多個產(chǎn)品 族的產(chǎn)品對象。
抽象工廠的角色及其職責(zé)
產(chǎn)品組和產(chǎn)品等級結(jié)構(gòu)
工廠模式:要么生產(chǎn)香蕉,要么生產(chǎn)蘋果、要么生產(chǎn)西紅柿;但是不能同時生產(chǎn)一 個產(chǎn)品組。抽象工廠:能同時生產(chǎn)一個產(chǎn)品族
而抽象工廠模式就可以生產(chǎn)一個產(chǎn)品族
產(chǎn)品等級結(jié)構(gòu):
生產(chǎn)香蕉。蘋果。梨子。但是每種水果都有不同的等級,有的好吃,有的難吃。
產(chǎn)品族
南方香蕉/蘋果/梨子(這是一個產(chǎn)品組)
北方香蕉/蘋果/梨子 (這是另外一個產(chǎn)品族)
抽象工廠模式的實現(xiàn)
#include<iostream> using namespace std;//抽象蘋果 class AbstractApple{ public:virtual void ShowName() = 0; };//中國蘋果 class ChinaApple :public AbstractApple{ public:virtual void ShowName(){cout << "中國蘋果" << endl;} };class USAApple :public AbstractApple{ public:virtual void ShowName(){cout << "美國蘋果" << endl;} }; class JapanApple :public AbstractApple{ public:virtual void ShowName(){cout << "日本蘋果" << endl;} }; //抽象香蕉 class AbsrtactBanana{ public:virtual void ShowName() = 0; };//中國香蕉 class ChinaBanana :public AbsrtactBanana{ public:virtual void ShowName(){cout << "中國香蕉" << endl;} }; class USABanana :public AbsrtactBanana{ public:virtual void ShowName(){cout << "美國香蕉" << endl;} }; class JapanBanana :public AbsrtactBanana{ public:virtual void ShowName(){cout << "日本香蕉" << endl;} };//抽象的梨子 class AbsrtactPear{ public:virtual void ShowName() = 0; };//中國梨子 class ChinaPear :public AbsrtactPear{ public:virtual void ShowName(){cout << "中國梨子" << endl;} }; //美國梨子 class USAPear :public AbsrtactPear{ public:virtual void ShowName(){cout << "美國梨子" << endl;} }; //日本梨子 class JapanPear :public AbsrtactPear{ public:virtual void ShowName(){cout << "日本梨子" << endl;} };//抽象工廠 針對產(chǎn)品族 class AbstractFactoty{ public:virtual AbstractApple *CreateApple() = 0;virtual AbsrtactBanana *CreateBanana() = 0;virtual AbsrtactPear* CreatePear() = 0; };//中國工廠 class ChinaFactory :public AbstractFactoty{ public:virtual AbstractApple *CreateApple(){return new ChinaApple;}virtual AbsrtactBanana *CreateBanana(){return new ChinaBanana;}virtual AbsrtactPear* CreatePear() {return new ChinaPear;} }; //美國工廠 class USAFactory :public AbstractFactoty{ public:virtual AbstractApple *CreateApple(){return new USAApple;}virtual AbsrtactBanana *CreateBanana(){return new USABanana;}virtual AbsrtactPear* CreatePear() {return new USAPear;} }; //日本工廠 class JapanFactory :public AbstractFactoty{ public:virtual AbstractApple *CreateApple(){return new JapanApple;}virtual AbsrtactBanana *CreateBanana(){return new JapanBanana;}virtual AbsrtactPear* CreatePear() {return new JapanPear;} };void test01(){AbstractFactoty *factory = NULL;AbstractApple *apple = NULL;AbsrtactBanana *banana = NULL;AbsrtactPear *pear = NULL;//中國工廠factory = new ChinaFactory; apple = factory->CreateApple();banana = factory->CreateBanana();pear = factory->CreatePear();apple->ShowName();banana->ShowName();pear->ShowName();delete apple;delete banana;delete pear; }int main(void){test01();system("pause");return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式---3(工厂方法模式的概念,工
- 下一篇: DNF中如何与对方交易?