пятница, 11 октября 2019 г.

Паттерны в Golang: Strategy (Стратегия)

Strategy (Стратегия) это поведенческий паттерн проектирования, позволяющий выбор поведения алгоритма в ходе исполнения.

Этот паттерн определяет алгоритмы, инкапсулирует их и использует их взаимозаменяемо.

Реализация

Реализация взаимозаменяемого объекта оператора, который оперирует целыми числами.

type Operator interface {
  Apply(int, int) int
}

type Operation struct {
  Operator Operator
}

func (o *Operation) Operate(leftValue, rightValue int) int {
  return o.Operator.Apply(leftValue, rightValue)
}

Использование

Оператор сложения

type Addition struct{}

func (Addition) Apply(lval, rval int) int {
  return lval + rval
}

add := Operation{Addition{}}
add.Apply(3, 5) // 8

Оператор умножения

type Multiplication struct{}

func (Multiplication) Apply(lval, rval int) int {
  return lval * rval
}

mult := Operation{Multiplication{}}

mult.Apply(3, 5) // 15

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


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


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

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