Object Pool это порождающий паттерн проектирования, используемый для подготовки и хранения множественных экземпляров согласно заданным параметрам.
Реализация
package pool
type Pool chan *Object
func New(total int) *Pool {
p := make(Pool, total)
for i := 0; i < total; i++ {
p <- new(Object)
}
return &p
}
Использование
Ниже приведен простой пример жизненного цикла для пула объектов.
p := pool.New(2)
select {
case obj := <-p:
obj.Do( /*...*/ )
p <- obj
default:
// Больше не осталось объектов -
// повторите попытку позже
// или обработайте неудачное получение
return
}
Резюме
Паттерн пула объектов полезен в случаях, когда инициализация объекта более дороже, чем обслуживание объекта.
Если есть всплески спроса на объекты в отличие от постоянного спроса, накладные расходы обслуживания могут перевесить преимущества пула объектов.
Паттерн пул объектов положительно влияет на производительность из-за предварительной инициализации объектов.
Читайте также:
- Паттерны в Golang: Синглтон (Singleton)
- Паттерны в Golang: Builder (Строитель)
- Паттерны в Golang: Factory Method (Фабричный метод)
Комментариев нет:
Отправить комментарий