자바에서 싱글톤패턴이란 하나의 클래스가 단 하나의 인스턴스만을 가지는 것을 뜻한다.
싱글톤 패턴의 장점
- 유일한 인스턴스 : 하나의 인스턴스만을 만들 수 있다. 때문에 일관된 상태를 유지할 수 있고 전역에서 접근가능하도록 할 수 있다.
- 메모리 절약 : 단 하나의 인스턴스만을 사용하기 때문에 메모리를 절약할 수 있다.
- 지연 초기화 : 인스턴스가 실제 사용되는 시점에 생성하여 초기 비용을 줄일 수 있다. (여기서 초기 비용은 현실에서의 재화를 말하는것은 아니고 메모리의 사용량이나 시간적인 측면에서의 비용을 말하는 것.
싱글톤 패턴의 단점
- 의존성이 높아진다 : 객체를 미리 생성하고 정적 메서드를 통해 사용하기 때문에 의존성이 높아지게 되는 문제점이 있다. (높은 결합)
- 기본이 private 기 때문에 상속이 어렵다 : 싱글톤 패턴은 기본 생성자를 private 로 설정하기 때문에 상속을 통한 자식클래스들을 만들 수 없다는 특징이 있다. 이 때문에 자바의 대표적인 특징인 다형성을 사용할 수 없다.
그래서 왜 사용하는데 ?
싱글톤 패턴은 단 한개의 인스턴스만 만들어서 사용하고, 프로그램이 로드될 때 처음부터 객체가 만들어져 메모리에 들어있기 때문에 동기화 문제를 해결할 수 있다.
하지만 사용하지 않을 시에는 불필요하게 메모리에 남아있기 때문에 불필요하게 자원이 사용될 수 있다.
최초로 한번 new 로 객체를 생성하고 이후에도 같은 객체를 공유해서 사용하기 때문에 메모리의 낭비가 적다.
사용 방법
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
// 생성자는 외부에서 호출못하게 private 으로 지정해야 한다.
}
public static Singleton getInstance() {
return instance;
}
public void say() {
System.out.println("hi, there");
}
}
생성자를 private 로 지정해서 외부에서 호출할 수 없게 해야한다.
대신 getInstance 메소드를 선언해서 instance 의 값이 null 이라면 객체가 생성될 수 있도록 할 수 있게 만든다.
'언어 > Java' 카테고리의 다른 글
JAVA 예외처리 (0) | 2024.10.01 |
---|---|
24년 09월 23일 (0) | 2024.09.30 |
자바의 컬렉션이란? (0) | 2024.09.30 |
자바 Property란? (1) | 2024.09.30 |
Java 제네릭이란? (0) | 2024.09.30 |