Golang 策略设计模式 介绍

简介

本教程讲解Golang编程语言的策略设计模式


开始


策略模式是设计模式的一种。软件开发中,我们经常会遇到这样的场景,比如支付,用户支付,可以通过支付宝,微信,或者银联。 他们最终的目的都是完成付钱的动作。我们可以归纳抽象这些支付渠道为相同的流程;基本的支付动作都是相同的,只不过支付实现(策略)不一样。比如调用的api 不一样,参数不一样,签名不一样等。

我们可以定义基本的支付 interface,然后用不同的实现,完成 provider.DoPay 操作,完成支付。 这种就是最简单的策略模式。


下面以具体示例来说明如何在golang下面,完成策略模式的基础设计。


Golang 策略设计模式 介绍

策略模式


先定义基本的interface,它是所有逻辑 的通用共有性,包含一个方法 DoPay


<code>//定义支付的 interface
type Payment interface {
DoPay(string, string) Boolean
}

// 定义一个支付策略的结构体,里面有一个属性Payment,是支付的interface
type PaymentStrategy struct {
Payment Payment
}

//定义一个策略的方法,调用它,会调用interface的实现方法 DoPay
func (o *PaymentStrategy) DoPayAction(config, args string) int {
return o.Payment.DoPay(config, args)
}/<code>


支付宝支付


<code>type AlipayStrategy struct{}
func (AlipayStrategy) DoPay(config, args string) int {
//TODO 这里写你具体的支付逻辑
}

p := PaymentStrategy{AlipayStrategy{}}

p.DoPayAction(config, args) // config 和args是支付相关的参数,比如支付配置信息和订单号等

/<code>



<code>type WeixinStrategy struct{}
func (WeixinStrategy) DoPay(config, args string) int {
//TODO 这里写你具体的支付逻辑
}

p := PaymentStrategy{WeixinStrategy{}}
p.DoPayAction(config, args) // config 和args是支付相关的参数,比如支付配置信息和订单号等

/<code>


总结


策略设计模式的好处,就是抽象了具体的业务逻辑,让你的代码更清晰可读,另外因为归纳了共性的方法,你后面如果需要再接入其他支付渠道,就更简单了。因为套路差不多。


在我理解,策略设计,就是封装好套路,套路差不多,不同的只是各自支付业务逻辑的实现不同。


分享到:


相關文章: