1.1.1 Singleton Pattern
1.1.1 싱글톤 패턴
싱글톤 패턴(Singleton Pattern)은 특정 클래스의 인스턴스를 하나만 만들고, 이 인스턴스를 어디서든지 접근할 수 있도록 하는 디자인 패턴입니다. 주로 애플리케이션 설정, 로그 관리, 데이터베이스 연결 등에 사용됩니다.
싱글톤 패턴의 특징
유일한 인스턴스 보장: 특정 클래스의 인스턴스가 하나만 존재하도록 제한합니다.
전역 접근: 인스턴스를 전역적으로 접근할 수 있도록 합니다.
지연 초기화: 인스턴스가 처음 사용될 때 생성되어 초기 로딩 시간과 메모리 사용을 절약할 수 있습니다.
싱글톤 패턴 구현 예제 (Java)
다음은 Java에서 싱글톤 패턴을 구현한 예제입니다:
위 예제에서는 Singleton
클래스의 유일한 인스턴스를 보관하는 정적 변수 instance
와, 이를 반환하는 정적 메서드 getInstance
를 정의합니다. new
키워드를 통해 인스턴스를 생성할 수 없도록 생성자는 private
으로 선언되었습니다. getInstance
메서드는 인스턴스가 없을 때만 새로 생성하며, 이후에는 동일한 인스턴스를 반환합니다.
데이터베이스 연결 모듈에서의 싱글톤 패턴 (Java)
다음은 데이터베이스 연결을 위한 싱글톤 패턴의 활용 예제입니다:
이 예제에서는 Database
클래스가 데이터베이스 URL을 인자로 받아 초기화합니다. getInstance
메서드는 인스턴스가 존재하지 않을 경우에만 새로운 Database
인스턴스를 생성하고, 이후에는 동일한 인스턴스를 반환합니다. 이를 통해 애플리케이션 전반에 걸쳐 단일 데이터베이스 연결 객체를 사용할 수 있습니다.
싱글톤 패턴의 장점과 단점
장점:
유일성 보장: 인스턴스가 하나만 존재하도록 보장하여, 불필요한 인스턴스 생성을 방지합니다.
전역 접근: 어디서든 동일한 인스턴스에 접근할 수 있어, 관리가 용이합니다.
지연 초기화: 인스턴스가 처음 사용될 때 생성되어 메모리 사용을 최적화합니다.
단점:
단일 책임 원칙 위반 가능성: 싱글톤 클래스가 너무 많은 역할을 맡게 될 수 있습니다.
테스트 어려움: 전역 상태를 가지므로 단위 테스트 작성이 어려울 수 있습니다.
의존성 숨김: 싱글톤 인스턴스에 의존하는 클래스들이 이를 명시적으로 드러내지 않아, 코드의 명확성을 떨어뜨릴 수 있습니다.
싱글톤 패턴은 그 특성상 특정 상황에서 매우 유용하지만, 남용할 경우 코드의 복잡성을 증가시키고 유지 보수성을 떨어뜨릴 수 있으므로 신중하게 사용해야 합니다.
Last updated