策略模式
所谓策略其实就是做一件事情有很多很多的方法,比如说一个商场要搞促销,促销的方式有可能有很多:打折啊,满100返50啊、积分等等之类的。这种不同的促销方式在我们系统中表示就是一个一个的策略,并且策略是可以随时更换的,这个时候在设计系统时就可以使用策略模式。
策略定义
type Strategy interface{
Process(param string) string
}
策略一
type OneStrategy struct{}
func (OneStrategy) Process(param string) string {
return "OneStrategy,1"
}
策略二
type TwoStrategy struct{}
func (TwoStrategy) Process(param string) string {
return "TwoStrategy,2"
}
操作
type Operation struct{
Strategy Strategy
}
func (this *Operation) Operate(param string) string {
return this.Strategy.Process(param)
}
例子
one:=&OneStrategy{}//策略一
two:=&TwoStrategy{}//策略二
oper:=&Operation{}//操作
oper.Strategy=one
ret:=oper.Operate("cmd")
fmt.Println(ret)
oper.Strategy=two
ret=oper.Operate("cmd")
fmt.Println(ret)