1. 程式人生 > >2,抽象工廠模式(Abstract Factory Pattern) 抽象工廠可以一下生產一個產品族(裏面有很多產品組成)

2,抽象工廠模式(Abstract Factory Pattern) 抽象工廠可以一下生產一個產品族(裏面有很多產品組成)

creat name hba abstract 模式 存在 names cto 園區

備註  工廠模式:要麽生產香蕉、要麽生產蘋果、要麽生產西紅柿;但是不能同時生產一個產品組。

    抽象工廠:能同時生產一個產品族。===》抽象工廠存在原因

解釋 : 具體工廠在開閉原則下, 能生產香蕉/蘋果/梨子; (產品等級結構)

抽象工廠:在開閉原則下, 能生產:南方香蕉/蘋果/梨子 (產品族) 北方香蕉/蘋果/梨子

重要區別:

工廠模式只能生產一個產品。(要麽香蕉、要麽蘋果)

抽象工廠可以一下生產一個產品族(裏面有很多產品組成

技術分享

  1 #include <iostre
  2
using namespace std; 3 //水果虛父類 4 class Fruit 5 { 6 public: 7 virtual void SayName() = 0; 8 }; 9 //園區(多工廠)虛父類 10 class AbstractFactory 11 { 12 public: 13 virtual Fruit* CreateBanana() = 0; 14 virtual Fruit* CreateApple() = 0; 15 }; 16 //水果子類A 來自園區工廠 17 class NorthBanana : public
Fruit 18 { 19 public: 20 virtual void SayName() 21 { 22 cout << "我是北方香蕉" << endl; 23 } 24 }; 25 //水果子類B 來自園區工廠 26 class NorthApple : public Fruit 27 { 28 public: 29 virtual void SayName() 30 { 31 cout << "我是北方蘋果" << endl; 32 }
33 }; 34 35 //水果子類C 來自園區工廠 36 class SourthBanana : public Fruit 37 { 38 public: 39 virtual void SayName() 40 { 41 cout << "我是南方香蕉" << endl; 42 } 43 }; 44 45 //水果子類D 來自園區工廠 46 class SourthApple : public Fruit 47 { 48 public: 49 virtual void SayName() 50 { 51 cout << "我是南方蘋果" << endl; 52 } 53 }; 54 //北方工廠 園區內 55 class NorthFacorty : public AbstractFactory 56 { 57 virtual Fruit * CreateBanana() 58 { 59 return new NorthBanana; 60 } 61 virtual Fruit * CreateApple() 62 { 63 return new NorthApple; 64 } 65 }; 66 //南方工廠 園區內 67 class SourthFacorty : public AbstractFactory 68 { 69 virtual Fruit * CreateBanana() 70 { 71 return new SourthBanana; 72 } 73 virtual Fruit * CreateApple() 74 { 75 return new SourthApple; 76 } 77 }; 78 79 80 void main() 81 { 82 Fruit *fruit = NULL; 83 AbstractFactory *af = NULL; 84 85 ///---南方工廠 生產蘋果 就是南方蘋果 生產香蕉就是北方香蕉----------- 86 af = new SourthFacorty; 87 fruit = af->CreateApple(); 88 fruit->SayName(); 89 delete fruit; 90 fruit = af->CreateBanana(); 91 fruit->SayName(); 92 delete fruit; 93 94 ///------ 95 af = new NorthFacorty; 96 fruit = af->CreateApple(); 97 fruit->SayName(); 98 delete fruit; 99 fruit = af->CreateBanana(); 100 fruit->SayName(); 101 delete fruit; 102 103 delete af; 104 system("pause"); 105 return ; 106 }

技術分享

2,抽象工廠模式(Abstract Factory Pattern) 抽象工廠可以一下生產一個產品族(裏面有很多產品組成)