싱글톤은 실행 중인 Java 프로그램에서 객체가 1개만 생성되어 사용되도록 보장하는 패턴입니다.
이 글에서는 싱글턴 패턴을 구현하는 방법에 대해서 알아보겠습니다.
아래 예제와 같이 sInstance를 static 변수를 선언할 때 초기화하고 get 메소드를 제공하여 사용하면, 객체가 1개만 생성되도록 보장할 수 있습니다.
하지만 이 방법의 단점은, 프로그램이 종료될 때까지 객체를 한번도 사용하지 않아도 객체가 항상 생성되어 메모리를 소비한다는 점입니다.
public class Example {
public final static class Singleton {
private static Singleton sInstance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return sInstance;
}
public void doSomething () {
System.out.println("Do something");
}
}
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.doSomething();
}
}
위 구현 방법의 특징은 다음과 같습니다.
이 방법은 싱글톤 객체가 실제로 사용될 때 객체를 생성하고, 필요하지 않으면 객체를 생성하지 않아 불필요한 객체 생성을 방지하는 방법입니다.
이것을 구현하기 위해 getInstance()는 아래와 같이 동작되어야 합니다.
다음과 같이 싱글턴 클래스를 구현할 수 있습니다.
public class Example1 {
public final static class Singleton {
private static Singleton sInstance;
private Singleton() {
}
public static Singleton getInstance() {
synchronized (Singleton.class) {
if (sInstance == null) {
sInstance = new Singleton();
}
}
return sInstance;
}
public void doSomething () {
System.out.println("Do something");
}
}
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.doSomething();
}
}
위의 구현 방식의 특징은 다음과 같습니다.
[자바] 어레이리스트에서 랜덤으로 요소 갖고오기 (0) | 2023.04.12 |
---|---|
[자바] 리스트 역순 순회 (0) | 2023.04.12 |
[스트림] 특정 조건으로 헤쉬맵 필터링 (0) | 2023.04.12 |
[스트림] reduce 사용법 및 예제 (0) | 2023.04.12 |
[람다식] 람다식 사용법 및 예제 (0) | 2023.04.12 |
댓글 영역