设计模式: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")
}
}