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>


總結


策略設計模式的好處,就是抽象了具體的業務邏輯,讓你的代碼更清晰可讀,另外因為歸納了共性的方法,你後面如果需要再接入其他支付渠道,就更簡單了。因為套路差不多。


在我理解,策略設計,就是封裝好套路,套路差不多,不同的只是各自支付業務邏輯的實現不同。


分享到:


相關文章: