싱글톤 패턴이란?
싱글톤 패턴은 어떤 클래스에 대해 오직 하나의 인스턴스만 생성하여 사용하는 것을 말합니다.
이러한 패턴을 따르는 클래스는 최초에 한번만 객체가 생성되고, 이후 생성자가 여러번 호출되더라도 이미 생성해놓은 객체를 반환하는 방식으로 작동하게 됩니다.
이러한 패턴은 주로 프로그램 내에서 전역적으로 공유될 필요가 있는 객체를 구현할 때 사용되곤합니다.
싱글톤 패턴을 사용하는 이유
1. 메모리의 절약
같은 작업을 하는 여러 객체가 불필요하게 중복 생성되어 메모리가 낭비되는 상황을 방지할 수 있습니다.
2. 데이터 공유
전역으로 사용되는 인스턴스이기 때문에 여러 클래스에서 데이터를 공유하며 사용할 수 있습니다.
주의할 점
1. 멀티 스레드 환경
멀티 스레드 환경에서 하나의 인스턴스를 대상으로 작업을 진행했을 때 인스턴스가 내부의 필드 값의 일관성이 깨지는 문제가 발생할 수 있습니다.
2. 클래스 간의 결합도 상승
여러 클래스에서 하나의 인스턴스를 호출하며 많은 데이터가 공유됨으로써 클래스들 간의 결합도가 높아지면서 OCP(개방폐쇠 원칙)에 위배되는 상황이 발생할 수 있습니다.
싱글톤 패턴 구현(Java)
public class Singleton {
// static 선언을 통해 클래스 컴파일 시 최초 한번만 생성된다
private static Singleton instance;
// 생성자를 private으로 선언하여 외부 접근을 막는다
private Singleton() {}
// 외부에서는 이 메서드를 통해 instance를 획득
public static Singleton getInstance() {
// instance가 null 일 때만 생성
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}