golang 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

相关文章

什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1 Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...