вторник, 8 октября 2019 г.

Паттерны в Golang: Factory Method (Фабричный метод)

Паттерн проектирования 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()


Читайте также:


Комментариев нет:

Отправить комментарий