반응형
# 싱글톤 개념
객체의 인스턴스를 한개만 생성되는 패턴
# 목적
1) 어떤 클래스에 오직 하나의 인스턴스만 존재
2) 하나만 존재하는 인스턴스에 전역(global) 접근 방법 제공
# 예시
게임의 설정 => 오직 하나만 존재한다.
# 기본적으로 싱글톤 예시
- sync.Once를 사용하여 한 번만 인스턴스를 생성하도록 보장한다.
- 기화 코드나 설정 코드를 안전하게 관리할 때 유용하게 사용
- 싱글톤 인스턴스의 초기화를 보장
type singletonByBasic struct {
data string
}
var (
once sync.Once
instanceByBasic *singletonByBasic
)
func getInstanceByBasic() *singletonByBasic {
once.Do(func() { // Do 메서드를 통해 한 번만 실행되도록 보장
instanceByBasic = &singletonByBasic{data: "안녕"}
})
return instanceByBasic
}
func BasicSingletonPatten() *singletonByBasic {
if instanceByBasic == nil {
instanceByBasic = getInstanceByBasic()
}
return instanceByBasic
}
func main() {
s3 := BasicSingletonPatten()
s4 := BasicSingletonPatten()
fmt.Println(s3 == s4)
}
# 참조 이슈
https://github.com/YooGenie/go-study/issues/72
반응형
'Study > 디자인패턴' 카테고리의 다른 글
[디자인패턴] 프록시 패턴(Proxy Pattern) (0) | 2023.08.28 |
---|---|
[디자인패턴] 팩토리 메소드 패턴(Factory Method Pattern) (0) | 2023.08.23 |
[디자인패턴] 시작 (0) | 2023.08.17 |