天天看點

政策設計模式_Golang 政策設計模式 介紹

簡介

本教程講解Golang程式設計語言的政策設計模式

開始

政策模式是設計模式的一種。軟體開發中,我們經常會遇到這樣的場景,比如支付,使用者支付,可以通過支付寶,微信,或者銀聯。 他們最終的目的都是完成付錢的動作。我們可以歸納抽象這些支付管道為相同的流程;基本的支付動作都是相同的,隻不過支付實作(政策)不一樣。比如調用的api 不一樣,參數不一樣,簽名不一樣等。

我們可以定義基本的支付 interface,然後用不同的實作,完成 provider.DoPay 操作,完成支付。 這種就是最簡單的政策模式。

下面以具體示例來說明如何在golang下面,完成政策模式的基礎設計。

政策設計模式_Golang 政策設計模式 介紹

政策模式

先定義基本的interface,它是所有邏輯 的通用共有性,包含一個方法 DoPay

//定義支付的 interfacetype Payment interface {    DoPay(string, string) Boolean}// 定義一個支付政策的結構體,裡面有一個屬性Payment,是支付的interfacetype PaymentStrategy struct {    Payment Payment}//定義一個政策的方法,調用它,會調用interface的實作方法 DoPayfunc (o *PaymentStrategy) DoPayAction(config, args string) int {    return o.Payment.DoPay(config, args)}
           

支付寶支付

type AlipayStrategy struct{}func (AlipayStrategy) DoPay(config, args string) int {    //TODO 這裡寫你具體的支付邏輯}p := PaymentStrategy{AlipayStrategy{}}p.DoPayAction(config, args) // config 和args是支付相關的參數,比如支付配置資訊和訂單号等
           

微信支付

type WeixinStrategy struct{}func (WeixinStrategy) DoPay(config, args string) int {    //TODO 這裡寫你具體的支付邏輯}p := PaymentStrategy{WeixinStrategy{}}p.DoPayAction(config, args) // config 和args是支付相關的參數,比如支付配置資訊和訂單号等
           

總結

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

在我了解,政策設計,就是封裝好套路,套路差不多,不同的隻是各自支付業務邏輯的實作不同。

繼續閱讀