设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)
生活随笔
收集整理的這篇文章主要介紹了
设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
抽象工廠模式
抽象工廠模式的概念
抽象工廠模式是所有形態的工廠模式中最為抽象和最其一般性的。抽象工廠模式可以向 客戶端提供一個接口,使得客戶端在不必指定產品的具體類型的情況下,能夠創建多個產品 族的產品對象。
抽象工廠的角色及其職責
產品組和產品等級結構
工廠模式:要么生產香蕉,要么生產蘋果、要么生產西紅柿;但是不能同時生產一 個產品組。抽象工廠:能同時生產一個產品族
而抽象工廠模式就可以生產一個產品族
產品等級結構:
生產香蕉。蘋果。梨子。但是每種水果都有不同的等級,有的好吃,有的難吃。
產品族
南方香蕉/蘋果/梨子(這是一個產品組)
北方香蕉/蘋果/梨子 (這是另外一個產品族)
抽象工廠模式的實現
#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;} };//抽象工廠 針對產品族 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; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的设计模式---4(抽象工厂模式的概念,产品组和产品等级的概念,抽象工厂模式的实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式---3(工厂方法模式的概念,工
- 下一篇: 设计模式---5(建造者模式的概念及其实