策略模式

  1. Strategy Pattern
  2. 实现
  3. 注意

Strategy Pattern

  策略模式在运行时动态地装配算法行为到对象中。

  我们可以定义算法,封装它们,动态地切换它们。

实现

1
2
3
4
5
6
7
8
9
10
11
type Operator interface{
Apply(int,int)int
}

type Operation struct{
Operator Operator
}

func (this *Operation)Operate(l,r int)int{
return this.Operator.Apply(l,r)
}

  定义具体的对象

1
2
3
4
5
type Addition struct{}

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

  使用

1
2
3
4
5
6
7
func main() {
operation := strategy.Operation{strategy.Addition{}}

res := operation.Operate(1,1)

fmt.Println(res)
}

注意

  • 策略模式可以让更换对象的内脏,而装饰者模式可以更换对象的外表。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件