Паттерн проектирования Factory Method (Фабричный метод) позволяет создавать объекты без указания точного типа объекта, который будет создан.
Реализация
В примере реализации показано, как обеспечить хранилище данных с различными бэкэндами, такими как хранилище в памяти, дисковое хранилище.
Типы
package data
import "io"
type Store interface {
Open(string) (io.ReadWriteCloser, error)
}
Различные реализации
package data
type StorageType int
const (
DiskStorage StorageType = 1 << iota
TempStorage
MemoryStorage
)
func NewStore(t StorageType) Store {
switch t {
case MemoryStorage:
return newMemoryStorage( /*...*/ )
case DiskStorage:
return newDiskStorage( /*...*/ )
default:
return newTempStorage( /*...*/ )
}
}
Использование
С фабричным методом пользователь может определить тип хранилища, который он хочет.
s, _ := data.NewStore(data.MemoryStorage)
f, _ := s.Open("file")
n, _ := f.Write([]byte("data"))
defer f.Close()
Читайте также:
- Паттерны в Golang: функциональные опции
- Паттерны в Golang: Builder (Строитель)
- Эффективный Go: функции
Комментариев нет:
Отправить комментарий