/* * @Description: * @version: * @Author: 莫邪 * @Date: 2023-10-08 10:53:47 * @LastEditors: 莫邪 * @LastEditTime: 2023-10-08 11:07:48 */ #include #include class AbstractBall { public: virtual void get() = 0; virtual void play() = 0; virtual ~AbstractBall() = default; }; class FootBall : public AbstractBall { public: void get() override { std::cout << "get footBall" << std::endl; } void play() override { std::cout << "play footBall" << std::endl;} }; class BasketBall : public AbstractBall { public: void get() override { std::cout << "get basketBall" << std::endl; } void play() override { std::cout << "play basketBall" << std::endl;} }; class Volleyball : public AbstractBall { public: void get() override { std::cout << "get volleyball" << std::endl; } void play() override { std::cout << "play volleyball" << std::endl;} }; enum Type { FootBallType = 1, BasketBallType = 2, VolleyballType = 3 }; class SimpleFactory { public: std::shared_ptr createBall(Type type) { switch (type) { case 1: return std::make_shared(); case 2: return std::make_shared(); case 3: return std::make_shared(); default: return nullptr; } } };