Go语言中如何实现函数选项模式(Functional Options Pattern)的最佳实践?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1385个文字,预计阅读时间需要6分钟。
函数选项模式很好,我是小白,有些白的。最近遇到一个问题,因为业务需求,需要对接三方平台。而三方平台提供的HTTP(S)接口都有统一的密钥生成规则要求。因此,需要这个需求。
什么是函数选项模式大家好,我是小白,有点黑的那个白。
最近遇到一个问题,因为业务需求,需要对接三方平台.
而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.
为此我们封装了一个独立的包 xxx-go-sdk 以便维护和对接使用.
其中核心的部分是自定义HTTP Client,如下:
type Client struct {}
func (c *Client) do() {
// 实现统一的加密和签名逻辑
// 统一调用net/http
}
// 订单列表接口
func (c *Client) OrderList(){
c.do()
}
// 订单发货接口
func (c *Client) OrderDelivery(){
c.do()
}
// ... 其他接口
一些平台会要求appKey/appSecret等信息,所以Client结构体就变成了这样,这时参数还比较少, 而且是必填的参数,我们可以提供构造函数来明确指定。
本文共计1385个文字,预计阅读时间需要6分钟。
函数选项模式很好,我是小白,有些白的。最近遇到一个问题,因为业务需求,需要对接三方平台。而三方平台提供的HTTP(S)接口都有统一的密钥生成规则要求。因此,需要这个需求。
什么是函数选项模式大家好,我是小白,有点黑的那个白。
最近遇到一个问题,因为业务需求,需要对接三方平台.
而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.
为此我们封装了一个独立的包 xxx-go-sdk 以便维护和对接使用.
其中核心的部分是自定义HTTP Client,如下:
type Client struct {}
func (c *Client) do() {
// 实现统一的加密和签名逻辑
// 统一调用net/http
}
// 订单列表接口
func (c *Client) OrderList(){
c.do()
}
// 订单发货接口
func (c *Client) OrderDelivery(){
c.do()
}
// ... 其他接口
一些平台会要求appKey/appSecret等信息,所以Client结构体就变成了这样,这时参数还比较少, 而且是必填的参数,我们可以提供构造函数来明确指定。

