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
Паттерн Стратегия позволяет вам изменять внутренности объекта. Паттерн Декоратор позволяет вам изменять оболочку объекта.
Читайте также:
- Паттерны в Golang: Object Pool (Пул объектов)
- Паттерны в Golang: Builder (Строитель)
- Паттерны в Golang: Factory Method (Фабричный метод)
Комментариев нет:
Отправить комментарий