Реализации на С++
Object pool
Общая реализация на языке С++
template <typename T>
concept EmployeePoolObject = requires(T t)
{
t.clockIn();
};class Employee
{
private:
static size_t count;
public:
Employee()
{
cout << "Constructor(" << ++count << ");" << endl;
}
~Employee()
{
cout << "Destructor(" << count-- << ");" << endl;
}
void clockIn()
{
cout << "Employee clocked in: 0x" << this << endl;
}
};
size_t Employee::count = 0;# include <iostream>
# include <memory>
# include <iterator>
# include <vector>
using namespace std;
int main()
{
shared_ptr<EmployeePool<Employee>> pool = EmployeePool<Employee>::instance();
vector<shared_ptr<Employee>> vec(4);
for (auto& elem : vec)
elem = pool->hireEmployee();
pool->fireEmployee(vec[1]);
cout << *pool << endl;
shared_ptr<Employee> ptr = pool->hireEmployee();
vec[1] = pool->hireEmployee();
cout << *pool << endl;
}Last updated