1、描述
保证一个类只有一个实例,全局有唯一接口访问
2、实现
1)懒汉模式:
type Singleton struct {}
var instance *Singleton
var mutex sync.Mutex
func GetInstance() *Singleton {
if instance == nil {
mutex.Lock()
defer mutex.Unlock()
if instance == nil {
instance = new(Singleton)
}
}
return instance
}
2)饿汉模式:
type Singleton struct {}
var instance *Singleton = new(Singleton)
func GetInstance() *Singleton {
return instance
}
3)sync.Once
type Singleton struct {}
var instance *Singleton
var once sync.Once
func GetInstance() *Singleton {
once.Do(func (){
instance = new(Singleton)
})
return instance
}