싱글톤 패턴(Singleton Pattern)이란?
싱글톤 패턴(Singleton Pattern)은 객체 지향 디자인 패턴 중 하나로,
- 어떤 클래스가 최초 한번만 메모리를 할당하고
- 그 메모리에 인스턴스를 생성해
- 이후에는 그 인스턴스를 계속해서 재사용하는 패턴이다.
즉, 해당 클래스의 인스턴스가 오직 하나만 존재하도록 보장한다.
이 패턴은 전역 변수를 사용하는 것보다 안정적이고 유연한 방식으로 하나의 인스턴스를 생성하고 사용할 수 있다.
또한, 동시에 여러 개의 인스턴스를 생성할 경우에 발생할 수 있는 문제를 예방할 수 있다.
싱글톤 패턴은 다양한 상황에서 사용될 수 있으며, 예를 들어 데이터베이스 연결, 로그 파일 생성 등의 기능에서 유용하게 사용된다고 한다.
싱글톤 패턴의 요소
싱글톤 패턴은 일반적으로 다음과 같은 요소들을 포함한다.
- private 생성자(private constructor): 클래스 내부에서만 인스턴스를 생성할 수 있도록 한다.
- static private 변수(static private variable): 하나의 인스턴스만을 가지고 있으며, 클래스 내부에서 생성한다.
- static public 메소드(static public method): 인스턴스에 접근할 수 있는 유일한 방법이다. 이 메소드를 통해 항상 동일한 인스턴스를 반환할 수 있도록 한다.
싱글톤 패턴이 무엇인지, 싱글톤 패턴의 요소에 대해서 간략히 살펴보았다.
그럼 이제 코드로 보자!
Java로 구현한 싱글톤 패턴 예시
아래는 Java로 구현한 싱글톤 패턴의 예시다.
public class Singleton {
private static Singleton instance; // static private 변수
private Singleton() {} // private 생성자
public static Singleton getInstance() { // static public 메소드
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
위의 예시에서는 Singleton 클래스의 생성자가 private으로 선언되어 있어, 외부에서는 Singleton 클래스의 인스턴스를 생성할 수 없다.
getInstance() 메서드는 instance 변수가 null인 경우에만 인스턴스를 생성한다. 그렇지 않으면 기존에 생성된 인스턴스를 반환한다. 이렇게 함으로써, 오직 하나의 인스턴스만 생성되고, 어디서나 항상 동일한 인스턴스를 사용할 수 있도록 보장된다.
이제 Singleton 클래스를 사용하는 코드 예시를 보자.
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
if(singleton1 == singleton2) {
System.out.println("동일한 인스턴스입니다.");
} else {
System.out.println("서로 다른 인스턴스입니다.");
}
위 코드에서 두 개의 Singleton 객체가 생성된다. 하지만 두 객체는 모두 동일한 인스턴스를 참조하므로 "동일한 인스턴스입니다."가 출력된다.
이와 같이 싱글톤 패턴을 사용하면 인스턴스가 오직 하나만 생성되도록 보장하고, 어디서나 동일한 인스턴스를 사용할 수 있도록 할 수 있다.
'etc.' 카테고리의 다른 글
[DevOps/Infra] 무중단 배포란?(Rolling, BlueGreen, Canary) (0) | 2024.01.15 |
---|---|
[etc.] 티스토리 블로그 시작합니다 (1) | 2022.07.19 |