#includeusing namespace std; //抽象产品 class Product { public: virtual void show() = 0; }; //抽象产品族1 class KeyBoard : public Product {}; //罗技键盘 class LogiKeyBoard : public KeyBoard { void show() { cout << "罗技键盘......" << endl; } }; //雷蛇键盘 class RazerKeyBoard : public KeyBoard { void show() { cout << "雷蛇键盘......" << endl; } }; //抽象产品族2 class Mouse : public Product {}; //罗技鼠标 class LogiMouse : public Mouse { void show() { cout << "罗技鼠标......" << endl; } }; class RazerMouse : public Mouse { void show() { cout << "雷蛇鼠标......" << endl; } }; //抽象工厂 class Factory { public: virtual KeyBoard* createKeyBoard() = 0; virtual Mouse* createMouse() = 0; }; class LogiFactory : public Factory { KeyBoard* createKeyBoard() { return new LogiKeyBoard; } Mouse* createMouse() { return new LogiMouse; } }; class RazerFactory : public Factory { KeyBoard* createKeyBoard() { return new RazerKeyBoard; } Mouse* createMouse() { return new RazerMouse; } }; int main() { Factory* factory = new LogiFactory; KeyBoard* keyBoard = factory->createKeyBoard(); Mouse* mouse = factory->createMouse(); keyBoard->show(); mouse->show(); delete factory; delete keyBoard; delete mouse; factory = new RazerFactory; keyBoard = factory->createKeyBoard(); mouse = factory->createMouse(); keyBoard->show(); mouse->show(); delete factory; delete keyBoard; delete mouse; factory = NULL; keyBoard = NULL; mouse = NULL; return 0; }



