Design/simpleFactory/SimpleFactor.hpp
2024-10-28 14:07:29 +08:00

58 lines
1.4 KiB
C++

/*
* @Description:
* @version:
* @Author: 莫邪
* @Date: 2023-10-08 10:53:47
* @LastEditors: 莫邪
* @LastEditTime: 2023-10-08 11:07:48
*/
#include <iostream>
#include <memory>
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<AbstractBall> createBall(Type type) {
switch (type) {
case 1:
return std::make_shared<FootBall>();
case 2:
return std::make_shared<BasketBall>();
case 3:
return std::make_shared<Volleyball>();
default:
return nullptr;
}
}
};