Fall in IT.

Golang Singleton Pattern 간단하게 알아보기 본문

프로그래밍언어/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
}

 

모두 즐거운 코딩하세요~

 

 

Comments