27template <
class ObjectType>
38 virtual std::shared_ptr<ObjectType>
Get() = 0;
43 std::vector<std::shared_ptr<ObjectType>>* data) = 0;
48 virtual void BatchGet(
size_t num,
bool is_front,
49 std::list<std::shared_ptr<ObjectType>>* data) = 0;
54 virtual void BatchGet(
size_t num,
bool is_front,
55 std::deque<std::shared_ptr<ObjectType>>* data) = 0;
70template <
class ObjectType>
79 std::shared_ptr<ObjectType>
Get()
override {
80 return std::shared_ptr<ObjectType>(
new ObjectType);
86 std::vector<std::shared_ptr<ObjectType>>* data)
override {
87 for (
size_t i = 0; i < num; ++i) {
88 data->emplace_back(std::shared_ptr<ObjectType>(
new ObjectType));
96 std::list<std::shared_ptr<ObjectType>>* data)
override {
97 for (
size_t i = 0; i < num; ++i) {
99 ? data->emplace_front(std::shared_ptr<ObjectType>(
new ObjectType))
100 : data->emplace_back(std::shared_ptr<ObjectType>(
new ObjectType));
108 std::deque<std::shared_ptr<ObjectType>>* data)
override {
109 for (
size_t i = 0; i < num; ++i) {
111 ? data->emplace_front(std::shared_ptr<ObjectType>(
new ObjectType))
112 : data->emplace_back(std::shared_ptr<ObjectType>(
new ObjectType));
virtual void set_capacity(size_t capacity)
virtual std::shared_ptr< ObjectType > Get()=0
virtual size_t RemainedNum()
virtual void BatchGet(size_t num, bool is_front, std::list< std::shared_ptr< ObjectType > > *data)=0
BaseObjectPool(const BaseObjectPool &rhs)=delete
virtual void BatchGet(size_t num, std::vector< std::shared_ptr< ObjectType > > *data)=0
virtual ~BaseObjectPool()=default
BaseObjectPool & operator=(const BaseObjectPool &rhs)=delete
virtual void BatchGet(size_t num, bool is_front, std::deque< std::shared_ptr< ObjectType > > *data)=0
DummyObjectPool()=default
static DummyObjectPool & Instance()
void BatchGet(size_t num, bool is_front, std::deque< std::shared_ptr< ObjectType > > *data) override
void BatchGet(size_t num, bool is_front, std::list< std::shared_ptr< ObjectType > > *data) override
void BatchGet(size_t num, std::vector< std::shared_ptr< ObjectType > > *data) override
std::shared_ptr< ObjectType > Get() override