class Game {
public:
Game() {}
virtual ~Game() {}
virtual void Play() {
std::cout << "play game" << std::endl;
}
};
class BasketBall : public Game {
void Play() override { std::cout << "play basketball" << std::endl; }
};
class SocketBall : public Game {
void Play() override { std::cout << "play socketball" << std::endl; }
};
class GameFactory {
public:
GameFactory() {}
virtual ~GameFactory() {}
virtual Game* CreateGame() = 0;
};
class BasketBallFactory : public GameFactory {
public:
Game* CreateGame() override {
return new BasketBall();
};
};
class SocketBallFactory : public GameFactory {
public:
Game* CreateGame() override {
return new SocketBall();
};
};
int main() {
GameFactory* factory = new BasketBallFactory();
Game* game = factory->CreateGame(); // 指向BasketBall
game->Play();
delete factory;
delete game;
factory = new SocketBallFactory();
game = factory->CreateGame();
game->Play();
delete factory;
delete game;
return 0;
}