设计模式:Go单例设计模式
创建型模式
1. 简介
控制系统中的某些对象,只有一个实例。
- 控制对象全部只有唯一实例。
- 懒惰启动。
2. 演示
singleton.go
package singleton
import (
"sync"
)
type singleton struct {}
var instance *singleton
var once sync.Once
func GetInstance() *singleton {
// 只有第一次会执行
once.Do(func() {
instance = &singleton{}
})
return instance
}
singleton_test.go
package singleton
import "testing"
func TestSingleton(t *testing.T) {
ins1 := GetInstance()
ins2 := GetInstance()
if ins1 != ins2 {
t.Logf("instance is not equal")
}
}
本文介绍了Go语言中实现单例模式的方法,通过控制全局对象仅有一个实例来简化系统设计。文章详细展示了如何利用sync包中的Once类型来确保实例的懒惰初始化且只执行一次,最后通过测试函数验证了单例模式的正确实现。

被折叠的 条评论
为什么被折叠?



