58 lines
1.4 KiB
C++
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;
|
||
|
}
|
||
|
}
|
||
|
};
|