C++設計模式——簡單工廠模式(2)
阿新 • • 發佈:2018-12-19
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; //抽象的水果類 class Fruit { public: virtual void getName() = 0; }; class Apple :public Fruit { public: virtual void getName() { cout << "我是蘋果" << endl; } }; class Banana :public Fruit { public: virtual void getName() { cout << "我是香蕉" << endl; } }; //新增一個新產品 鴨梨 class Pear :public Fruit { public: virtual void getName() { cout << "我是鴨梨" << endl; } }; //工廠 class Factory { public: //水果生產器 Fruit * createFruit(string kind) { Fruit *fruit = NULL; if (kind == "apple") { fruit = new Apple; } else if(kind == "banana"){ fruit = new Banana; } //新增一個鴨梨 修改了工廠的方法, 違背了開閉原則 else if (kind == "pear") { fruit = new Pear; } return fruit; } }; int main(void) { //人們是跟工廠打交道 Factory *factory = new Factory; //建立一個工廠 //給我來一個蘋果 Fruit *apple = factory->createFruit("apple"); apple->getName(); Fruit *banana = factory->createFruit("banana"); banana->getName(); Fruit *pear = factory->createFruit("pear"); delete apple; delete banana; delete factory; return 0; }