GO 设计模式

Aug 7, 2021·
1ch0
· 1 min read

单例模式

一个类只允许创建一个实例。

在业务概念中,在系统中只应该保存一份的数据,适合用单例模式。

  1. 饿汉式
package singleton

type Singleton struct {}

var singleton *Singleton

func init()  {
	singleton = &Singleton{}
}

func GetInstance() *Singleton {
	return singleton
}
  1. 懒汉式
package singleton

import "sync"

type Singleton struct{}

var (
	lazySingleton *Singleton
	once = sync.Once{}
)

func GetLazyInstance() *Singleton {
	if lazySingleton == nil {
		once.Do(func() {
			lazySingleton = &Singleton{}
		})
	}
	return lazySingleton
}