minstudio

싱글톤 패턴 (Singleton)

싱글톤 패턴(Singleton Pattern)은 프로그램 전역에서 단 하나의 인스턴스(객체)만 생성되도록 보장하는 생성 패턴입니다.

데이터베이스 연결 관리자나 환경 설정(Config) 객체처럼 여러 개를 생성하면 메모리가 낭비되거나 상태가 꼬일 위험이 있는 곳에 주로 사용합니다. 생성자를 private으로 막아 외부 생성을 차단하고, getInstance()라는 정적(static) 메서드를 통해서만 객체를 받아갈 수 있게 만드는 것이 핵심입니다.

👑 Singleton: 오직 단 하나의 인스턴스 Database Connection - constructor() (private) + getInstance() (static) Client A Client B Client C 아무리 많은 클라이언트가 요청해도, 메모리에 할당된 객체는 단 1개!
// 📂 DatabaseConnection.java (Java)
// Thread-safe를 고려한 Lazy Initialization 방식
public class DatabaseConnection {
    private static DatabaseConnection instance;

    // 생성자를 private으로 선언하여 외부에서 new 키워드 사용 금지
    private DatabaseConnection() {
        System.out.println("데이터베이스 연결 초기화 완료");
    }

    // 멀티스레드 환경에서 동시에 생성되는 것을 막기 위해 synchronized 사용
    public static synchronized DatabaseConnection getInstance() {
        if (instance == null) {
            instance = new DatabaseConnection();
        }
        return instance;
    }

    public void executeQuery(String query) {
        System.out.println("쿼리 실행: " + query);
    }
}

// 📂 Main.java (사용 예시)
public class Main {
    public static void main(String[] args) {
        DatabaseConnection db1 = DatabaseConnection.getInstance();
        DatabaseConnection db2 = DatabaseConnection.getInstance();
        
        System.out.println(db1 == db2); // true
        db1.executeQuery("SELECT * FROM users");
    }
}
싱글톤 패턴 (Singleton) | Minstudio