싱글톤 패턴이란, 클래스의 인스턴스가 프로그램 전체에 걸쳐 단 하나만 존재하도록 보장하는 구조 입니다. 예를 들어 여러 객체가 생성된다면 어떤 객체에 있는 정보가 정확한 정보인지 알 수가 없기 때문에 문제가 발생합니다.
이런 부분은 싱글톤 패턴으로 구현하여 하나의 객체만 존재하도록 해야합니다.
그렇다면 정적(static) 클래스를 사용하는 것과 어떻게 다를까요?
# | Singleton Pattern class | static class |
초기화(생성) 시점 | 필요한 시점에 생성해서 리소스를 효율적으로 사용 가능합니다. | 프로그램 실행 시점에 자동으로 초기화 되며, 실행 동안에 메모리에 상주하게 됩니다. |
확장성 | 상속, 인터페이스 구현이 가능하여 확장성을 가집니다. | 정적 클래스는 상속, 인터페이스 구현이 불가합니다. |
호출 | Instance 변수를 통하여 호출합니다. | 클래스명.함수로 쉽게 호출이 가능합니다. |
생성자 | 일반 클래스처럼 생성자 사용이 가능합니다. | 정적 클래스는 정적 생성자만 가질 수 있습니다. |
어디에 쓰면 좋을까? | 원하는 시점에 생성할 수 있고 확장성이 필요한 클래스 | 어디서나 필요하고, 간단한 역할을 하는 클래스 |
필요한 시점에 자원을 할당하여 재사용이 가능한 클래스 객체를 직접 생성해봅시다. (static은 쓰지 않을 것입니다.)
싱글톤 객체를 생성하고, 그 안에 싱글톤 인스턴스를 저장할 private 필드를 생성합니다.
private를 통해 외부에서 인스턴스를 생성할 수 없도록 합니다.
// 싱글톤 패턴 객체 생성
public class Singleton {
// 싱글톤 인스턴스를 저장할 private 필드
private Singleton instance;
// private 생성자로 외부에서 객체 생성 불가능하게 설정
private Singleton() {}
// 싱글톤 인스턴스를 반환하는 메서드
public Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
728x90
'Software Tech > Spring (feat.JAVA)' 카테고리의 다른 글
Servlet & JSP에 대하여 (1) | 2024.12.26 |
---|---|
MVC 패턴 (Model-View-Controller) (2) | 2024.11.19 |
멤버변수, 전역변수, 지역변수 (0) | 2024.11.19 |
자식클래스가 부모클래스를 인스턴스로 받을 수 없는 이유 (0) | 2024.11.19 |
[Java] 자바 기초 학습 내용 정리 (0) | 2024.10.09 |