언어/Java

자바 싱글톤패턴이란?

DH_PARK 2024. 10. 3. 19:34

자바에서 싱글톤패턴이란 하나의 클래스가 단 하나의 인스턴스만을 가지는 것을 뜻한다.

 

싱글톤 패턴의 장점

  • 유일한 인스턴스 : 하나의 인스턴스만을 만들 수 있다. 때문에 일관된 상태를 유지할 수 있고 전역에서 접근가능하도록 할 수 있다.
  • 메모리 절약 : 단 하나의 인스턴스만을 사용하기 때문에 메모리를 절약할 수 있다.
  • 지연 초기화 : 인스턴스가 실제 사용되는 시점에 생성하여 초기 비용을 줄일 수 있다. (여기서 초기 비용은 현실에서의 재화를 말하는것은 아니고 메모리의 사용량이나 시간적인 측면에서의 비용을 말하는 것.

싱글톤 패턴의 단점

  • 의존성이 높아진다 : 객체를 미리 생성하고 정적 메서드를 통해 사용하기 때문에 의존성이 높아지게 되는 문제점이 있다. (높은 결합)
  • 기본이 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