프로그래밍언어/Golang
Golang Singleton Pattern 간단하게 알아보기
D.Y
2022. 6. 15. 10:04
반응형
안녕하세요.
오늘은 Golang에서 Singleton Pattern을 구현하는 방법에 대해서 간단하게 알아보겠습니다.
Singleton Pattern이란?
- 이 패턴은 인스턴스가 하나만 존재해야 하는 경우 사용된다.
(예를들어서, DB 인스턴스나 Logger와 같은 인스턴스가 이에 해당할 수 있다.)
구현 방법 1.
Mutex를 사용하는 방법
var lock = &sync.Mutex{}
type single struct {
}
var singleInstance *single
func GetInstance() *single {
if singleInstance == nil {
lock.Lock()
defer lock.Unlock()
if singleInstance == nil {
fmt.Println("[Mutex] create single instance")
singleInstance = &single{}
} else {
fmt.Println("[Mutex] single instance already created-1")
}
} else {
fmt.Println("[Mutex] single instance already created-2")
}
return singleInstance
}
구현방법 2.
sync.Once를 사용하는 방법
package once
import (
"fmt"
"sync"
)
var once sync.Once
type single struct {
}
var singleInstance *single
func GetInstance() *single {
if singleInstance == nil {
once.Do(func() {
fmt.Println("[Once] create single instance")
singleInstance = &single{}
})
} else {
fmt.Println("[Once] single instance already created-1")
}
return singleInstance
}
모두 즐거운 코딩하세요~
반응형