괴발개발 성장기

Study/디자인패턴

[디자인패턴] 싱글톤

지니유 2023. 8. 19. 14:35
반응형

# 싱글톤 개념

객체의 인스턴스를 한개만 생성되는 패턴

 

# 목적

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

 

싱글톤 · Issue #72 · YooGenie/go-study

 

github.com

 

반응형