#include <iostream>
using 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;
}
C++抽象工厂模式(3)
最新推荐文章于 2024-07-17 18:07:42 发布