Что такое паттерн Strategy?

Middle
735 просмотров
AFK Offer AI

Strategy — паттерн, позволяющий выбирать алгоритм в рантайме. В Go реализуется через интерфейсы или функции первого класса.

type Compressor interface {
    Compress(data []byte) ([]byte, error)
}

type GzipCompressor struct{} type ZstdCompressor struct{}

func Upload(data []byte, c Compressor) error { compressed, _ := c.Compress(data) return send(compressed) }

Или проще — через функцию:

type CompressFunc func([]byte) ([]byte, error)

func Upload(data []byte, compress CompressFunc) error { compressed, _ := compress(data) return send(compressed) }

В Go Strategy — самый естественный паттерн, потому что интерфейсы маленькие и реализуются неявно. По сути, каждый раз когда принимаешь интерфейс в функции — используешь Strategy.

Следующий вопрос

Что такое linked list?