싱글톤이란?
싱글톤은 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.
- 프로그램 내에서 하나의 객체만 존재해야 한다.
- 프로그램 내에서 여러 부분에서 해당 객체를 공유하여 사용해야 한다.
싱글톤 클래스
singleton 클래스에서는 인스턴스를 하나만 만들 수 있는데, singleton은 static필드(클래스 변수)로 정의되고 Singleton 클래스의 인스턴스에서 초기화한다. 초기화는 Singleton 클래스를 로드할 때 한 번만 실행한다.
싱글톤 구현하기
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다.
}
public static Singleton getInstance() {
return instance;
}
}
Singleton 클래스의 유일한 인스턴스를 얻는 메소드로 getInstance가 제공된다.
public class Main{
public static void main(String[] args){
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if(obj1 == obj2){
System.out.println("obj1과 obj2는 같은 인스턴스");
}else {
System.out.println("obj1과 obj2는 다른 인스턴스");
}
}
}
// 결과
// obj1과 obj2는 같은 인스턴스
싱글톤 패턴을 사용하는 이유
1. 메모리 측면
싱글톤 패턴을 사용하게 된다면 한 개의 인스턴스만을 고정 메모리 영역에 생성하고 추후 해당 객체를 접근할 때 메모리 낭비를 방지할 수 있다.
2. 속도 측면
생성된 인스턴스를 사용할 때는 이미 생성된 인스턴스를 활용하여 속도 측면에 이점이 있다.
3. 데이터 공유가 쉽다
전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하며 사용할 수 있다. 하지만 동시성 문제가 발생할 수 있어 이 점은 유의하여 설계해야 한다.
참고
- <Java로 배우는 디자인 패턴>
- https://velog.io/@seongwon97/%EC%8B%B1%EA%B8%80%ED%86%A4Singleton-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80
- https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/
싱글톤(Singleton) 패턴이란?
싱글톤 패턴은 객체의 인스턴스를 한개만 생성되게 하는 패턴입니다.
velog.io
싱글톤(Singleton) 패턴이란?
이번 글에서는 디자인 패턴의 종류 중 하나인 싱글톤 패턴에 대해 알아보자. 싱글톤 패턴이 무엇인지, 패턴 구현 시 주의할 점은 무엇인지에 대해 알아보는 것만으로도 많은 도움이 될 것이라
tecoble.techcourse.co.kr