Golang 单例模式 singleton pattern

简介:

在Java中,单例模式的实现主要依靠类中的静态字段。在Go语言中,没有静态类成员,所以我们使用的包访问机制和函数来提供类似的功能。来看下下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package  singleton
                                                  
import  (
     "fmt"
)
                                                  
type Singleton  interface  {
     SaySomething()
}
                                                  
type singleton struct {
     text string
}
                                                  
var oneSingleton Singleton
                                                  
func NewSingleton(text string) Singleton {
     if  oneSingleton == nil {
         oneSingleton = &singleton{
             text: text,
         }
     }
     return  oneSingleton
}
                                                  
func ( this  *singleton) SaySomething() {
     fmt.Println( this .text)
}

   来测试下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package  main
                          
import  (
     "Singleton/singleton"
)
                          
func main() {
     mSingleton, nSingleton := singleton.NewSingleton( "hello" ), singleton.NewSingleton( "hi" )
     mSingleton.SaySomething()
     nSingleton.SaySomething()
}
     
     
//----------------------- goroutine 测试 ------------------------
func main() {
     c := make(chan  int )
     go newObject( "hello" , c)
     go newObject( "hi" , c)
     
     <-c
     <-c
}
     
func newObject(str string, c chan  int ) {
     nSingleton := singleton.NewSingleton(str)
     nSingleton.SaySomething()
     c <-  1
}

输出结果:

wKiom1Lh2xjCyOqKAAAyezjigLU260.jpg










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1354360,如需转载请自行联系原作者
目录
相关文章
|
10天前
|
设计模式 安全 测试技术
[设计模式 Go实现] 创建型~单例模式
[设计模式 Go实现] 创建型~单例模式
|
4月前
|
Java Go C++
Golang每日一练(leetDay0099) 单词规律I\II Word Pattern
Golang每日一练(leetDay0099) 单词规律I\II Word Pattern
26 0
Golang每日一练(leetDay0099) 单词规律I\II Word Pattern
|
4月前
|
设计模式 Go 开发工具
Golang设计模式——19单例模式
Golang设计模式——19单例模式
26 0
|
7月前
|
设计模式 存储 缓存
Go 语言实现创建型设计模式 - 单例模式
Go 语言实现创建型设计模式 - 单例模式
43 1
|
8月前
|
设计模式 安全 Java
深入剖析Golang中单例模式
深入剖析Golang中单例模式
|
10月前
|
设计模式 Java Go
Go实现设计模式之单例模式
单例模式(Singleton Pattern)是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式常用于需要共享资源或控制资源访问的场景,例如数据库连接池、线程池等。
217 0
|
11月前
|
设计模式 安全 数据库连接
Golang 常见设计模式之单例模式
Golang 常见设计模式之单例模式
129 0
|
设计模式 缓存 Java
一起学习 Go 语言设计模式之单例模式(下)
单例模式很容易记住。就像名称一样,它只能提供对象的单一实例,保证一个类只有一个实例,并提供一个全局访问该实例的方法。
|
存储 设计模式 安全
一起学习 Go 语言设计模式之单例模式(上)
单例模式很容易记住。就像名称一样,它只能提供对象的单一实例,保证一个类只有一个实例,并提供一个全局访问该实例的方法。
一起学习 Go 语言设计模式之单例模式(上)
|
设计模式 缓存 网络协议
Go设计模式(6)-单例模式
前面5篇文章讲解了设计模式的语法、面向对象分析、原则、代码编写、类图表示法,从本文开始讲述23种设计模式。