golang singleton 单件模式
发布时间:2020-12-16 18:53:34 所属栏目:大数据 来源:网络整理
导读:单件模式 singleton 它是为了提供一个全局实例。比如数据库连接,如果每个用户和线程都独立申请,那么很快就会达到数据库连接的上限。不使用全局变量是因为: 部分语言没有全局变量; 全局变量一样无法阻止类多次实例化。 最终目的是确保只有一个全局实例的
|
单件模式 singleton 它是为了提供一个全局实例。比如数据库连接,如果每个用户和线程都独立申请,那么很快就会达到数据库连接的上限。不使用全局变量是因为:
最终目的是确保只有一个全局实例的办法,比如通过约定俗成的Instance()获得该类实例,Instance()保证不会重复创建。又或者无法调用类的构造函数,而只能调用类的获取实例函数,这样就实现了无法创建新实例的目的。 --- 目录结构 main.go ./singleton/singleton.go singleton.go packagesingleton
import(
"fmt"
)
var_self*Singleton
typeSingletonstruct{
Namestring
}
funcInstance()*Singleton{
if_self==nil{
_self=new(Singleton)
return_self
}
return_self
}
func(o*Singleton)SetName(sstring){
_self.Name=s
}
func(o*Singleton)GetName(){
fmt.Println("Name:",_self.Name)
}
main.go packagemain
import(
"./singleton"
)
funcmain(){
a:=singleton.Instance()
b:=singleton.Instance()
a.SetName("funny")
b.SetName("Test")
a.GetName()
return
}
结果: Name: Test (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
