[DesignPattern] 싱글턴 패턴(Singleton Pattern)
싱글톤 패턴: 객체 지향 프로그래밍의 설계 패턴
싱글톤 패턴은 객체 지향 프로그래밍에서 자주 사용되는 설계 패턴 중 하나입니다. 이 패턴은 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하며, 그 인스턴스에 대한 전역적인 접근점을 제공합니다. 이 글에서는 싱글톤 패턴의 개념, 사용법, 예시 코드 등을 다뤄보겠습니다.
✅싱글톤 패턴의 개념
싱글톤 패턴은 다음과 같은 특징을 갖습니다:
- 유일한 인스턴스: 해당 클래스의 인스턴스가 오직 하나만 존재합니다.
- 전역적인 접근성: 어디서든지 해당 인스턴스에 접근할 수 있습니다.
싱글톤 패턴은 보통 다음과 같은 상황에서 사용됩니다:
- 공유된 자원에 대한 접근을 제어할 때
- 설정 관리자, 로그 레포터, 캐시 관리자 등의 서비스를 제공할 때
✅싱글톤 패턴의 구현 방법
싱글톤 패턴은 다양한 방식으로 구현할 수 있지만, 주로 다음 두 가지 방식으로 구현됩니다:
1. 정적 멤버 변수를 이용한 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Singleton {
private static Singleton instance;
private Singleton() {} // private constructor
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
2. 정적 팩토리 메서드를 이용한 구현
1
2
3
4
5
6
7
8
9
10
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {} // private constructor
public static Singleton getInstance() {
return instance;
}
}
✅싱글톤 패턴의 예시 코드
Java 예시 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Singleton {
private static Singleton instance;
private Singleton() {} // private constructor
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
public void showMessage() {
System.out.println("Hello, Singleton!");
}
}
사용 예시
1
2
3
4
5
6
7
public class Main {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.showMessage();
}
}
📌싱글톤 패턴의 주의사항
- 멀티스레드 환경에서 안전하게 사용하기 위해 동기화 처리를 해야 합니다.
- 리플렉션을 통한 객체 생성을 막아야 합니다.
- 직렬화와 역직렬화에 대한 보안 문제에 유의해야 합니다.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.