建造者模式用于构造复杂配置对象,通过链式调用设置字段并返回最终实例。定义ClientConfig结构体与ClientConfigBuilder建造者,提供默认值与各类Set方法,最后通过Build输出不可变对象。

在Go语言中,建造者模式(Builder Pattern)常用于构造复杂的配置对象,特别是当结构体字段较多、部分字段可选、需要链式调用设置时。它能提升代码的可读性和可维护性,避免使用大量参数的构造函数或暴露结构体字段。
假设我们要构建一个HTTP客户端的配置对象,包含超时、重试次数、用户代理等可选字段。
示例:先定义配置结构体和建造者:
<pre class="brush:php;toolbar:false;">type ClientConfig struct {
Timeout int
Retries int
UserAgent string
Proxy string
TLS bool
}
type ClientConfigBuilder struct {
config *ClientConfig
}
创建一个新实例,并通过方法链逐步设置字段:
立即学习“go语言免费学习笔记(深入)”;
<pre class="brush:php;toolbar:false;">// NewClientConfigBuilder 返回一个新的建造者实例
func NewClientConfigBuilder() *ClientConfigBuilder {
return &ClientConfigBuilder{
config: &ClientConfig{
Timeout: 30, // 默认值
Retries: 3,
TLS: true,
},
}
}
// SetTimeout 设置超时时间
func (b *ClientConfigBuilder) SetTimeout(timeout int) *ClientConfigBuilder {
b.config.Timeout = timeout
return b
}
// SetRetries 设置重试次数
func (b *ClientConfigBuilder) SetRetries(retries int) *ClientConfigBuilder {
b.config.Retries = retries
return b
}
// SetUserAgent 设置用户代理
func (b *ClientConfigBuilder) SetUserAgent(ua string) *ClientConfigBuilder {
b.config.UserAgent = ua
return b
}
// SetProxy 设置代理地址
func (b *ClientConfigBuilder) SetProxy(proxy string) *ClientConfigBuilder {
b.config.Proxy = proxy
return b
}
// DisableTLS 关闭TLS
func (b *ClientConfigBuilder) DisableTLS() *ClientConfigBuilder {
b.config.TLS = false
return b
}
添加 Build 方法返回不可变的配置对象:
<pre class="brush:php;toolbar:false;">// Build 返回最终的配置对象
func (b *ClientConfigBuilder) Build() *ClientConfig {
// 可在此处添加校验逻辑
if b.config.Timeout <= 0 {
panic("timeout must be greater than 0")
}
return b.config
}
使用方式如下:
<pre class="brush:php;toolbar:false;">config := NewClientConfigBuilder().
SetTimeout(10).
SetRetries(5).
SetUserAgent("my-app/1.0").
SetProxy("http://proxy.example.com:8080").
DisableTLS().
Build()
// 使用 config 创建客户端
fmt.Printf("%+v\n", config)
这种方式让配置创建清晰、安全且易于扩展。如果将来新增字段,只需在建造者中添加对应方法,不影响已有代码。
基本上就这些。建造者模式在Go中虽不如Java那样常见,但在构造复杂配置时非常实用。
以上就是Golang如何使用建造者模式生成配置对象的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号