🕵️
Введение в паттерны
  • Введение в паттерны
  • Паттерны
    • Оглавление
    • Порождающие паттерны
      • Фабричный метод
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Абстрактная фабрика
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Прототип
        • Реализации на С++
        • Реализации на Kotlin
        • Реализации на Java
        • Возможные реализации для решения конкретных задач на С++
      • Строитель
        • Реализации на С++
        • Реализации на Kotlin
      • Одиночка
        • Реализации на C++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Пул объектов
        • Реализации на С++
    • Структурные паттерны
      • Адаптер
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач
      • Декоратор
        • Реализации на С++
        • Реализации на Kotlin
      • Компоновщик
        • Реализации на С++
      • Мост
        • Реализации на С++
      • Заместитель
        • Реализации на С++
        • Реализации на Kotlin
      • Фасад
        • Реализации на С++
      • Приспособленец
        • Реализации на С++
    • Поведенческие паттерны
      • Стратегия
        • Реализации на С++
        • Реализации на Kotlin
      • Команда
        • Реализации на С++
        • Реализации на Kotlin
      • Цепочка обязанностей
        • Реализации на С++
        • Реализации на Kotlin
      • Подписчик-издатель
        • Реализации на С++
        • Реализации на Kotlin
      • Посетитель
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
      • Посредник
        • Реализации на С++
        • Реализации на Kotlin
      • Шаблонный метод
        • Реализации на С++
      • Опекун
        • Реализации на С++
      • Итератор
        • Реализации на С++
        • Реализации на Kotlin
      • Свойство
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
  • Введение в идиомы
  • Идиомы
    • Оглавление
    • RAII
    • Type erasure
      • Контейнеры с type erasure
    • CRTP
    • Статический полиморфизм
    • Shrink to fit
    • Proxy
    • Erase remove
    • Decltype (auto)
    • Copy and swap
    • Safe bool
    • Scope guard
    • Addressof
Powered by GitBook
On this page
  • Проблема
  • Назначение
  • Решаемые задачи
  • Преимущества
  • Недостатки

Was this helpful?

  1. Паттерны
  2. Порождающие паттерны

Пул объектов

Object pool

Проблема

  • Требуется ограниченное количество объектов одного класса.

  • Переиспользование сложных объектов

Представь, что у тебя есть домашний Wi-Fi роутер. Вместо того чтобы каждый раз, когда устройство в доме нуждается в подключении к Интернету, создавать новое подключение к провайдеру интернета и разрывать его после использования, ты можешь использовать пул подключений.

Назначение

Пул объектов (Object pool) – это порождающий паттерн проектирования, который предоставляет ограниченный набор инициализированных, по мере необходимости, и готовых для использования объектов. Используется для повышения производительности и управления ресурсами путем повторного использования предварительно созданных объектов вместо создания новых. Это полезно в случаях, когда создание объектов требует значительных ресурсов, таких как соединения с базой данных.

Решаемые задачи

  • Централизованное управление доступом.

Обеспечивает централизованное управление доступом к объектам пула

  • Контроль и ограничение доступа.

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

  • Повышение производительности.

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

  • Управление жизненным циклом объектов.

Упрощает управление жизненным циклом объектов, так как клиенту не нужно явно создавать и уничтожать объекты, а просто получать и возвращать их в пул.

Преимущества

  1. Повышается производительность за счет минимизации создания и уничтожения множества объектов.

  2. Возможность ограничивать и контролировать число используемых объектов.

  3. Возможность переиспользовать объект.

Недостатки

  1. Функция очистки, создания, удаления объекта. Возможность утечки информации. Если объект не очищается или его состояние не сбрасывается перед возвращением в пул, может возникнуть утечка информации. Например, если объект содержит конфиденциальные данные или ссылки на другие объекты, эта информация может остаться в объекте после его возврата в пул.

  2. Увеличение объема кода. Внедрение паттерна требует создания дополнительной логики для управления пулом объектов, обработки доступа к объектам, контроля их состояния.

  3. Усложнение архитектуры приложения.

  4. В некоторых ситуациях сложная логика управления пулом.

PreviousВозможные реализации для решения конкретных задач на С++NextРеализации на С++

Last updated 1 year ago

Was this helpful?