GO设计模式3-策略模式

策略模式

        所谓策略其实就是做一件事情有很多很多的方法,比如说一个商场要搞促销,促销的方式有可能有很多:打折啊,满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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值