Как предотвратить строительство с помощью бассейна объектов

StackOverflow https://stackoverflow.com/questions/7803602

  •  25-10-2019
  •  | 
  •  

Вопрос

Я хочу использовать шаблон проектирования пула объектов для моей библиотеки, чтобы пользователь не мог создать больше, чем предопределенное количество объектов.
Как я могу заставить пользователя использовать класс пула для получения экземпляра, а не конструктора ресурса?

Я не могу объявить конструктор ресурсов частным, потому что тогда класс пула тоже не сможет создать экземпляр ...

Спасибо

Это было полезно?

Решение

Используйте композицию и класс, который содержит коллекцию. IOW, вы даете им тип обертки вокруг коллекции, которая настраивает видимость и обрабатывает создание объектов.

Если вы действительно хотите еще больше ограничить создание ресурсов, вы можете связать без дружбы, используя этот подход (увидев комментарии C ++/друга):

class t_resource {
private:
    t_resource();
public:
    ~t_resource();

    static void AddToResourcePool(t_resource_pool& resourcePool) {
        if (resourcePool.isFull()) {
            /* error */
        }
        else {
            resourcePool.addResource(new t_resource);
        }
    }
};

Другие советы

Бассейн нет необходимость быть отдельным от самого класса, или класс может сочинять в бассейне и т. Д.

Примеры будут извлечены из бассейна объекта (автономного), как синглтон, но как кто-то, кто-то-ты-впал.

Вы также можете играть в игры с видимостью, но как это сделать, зависит от языка, и IMO, вероятно, не стоит усилий-использовать синглтонский рисунок, но с не объекты вместо одного.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top