본문 바로가기
공부자료/자바

Singleton pattern

by MIS경영정보 2023. 2. 4.
반응형

Singleton 패턴은 클래스에 인스턴스가 하나만 있는지 확인하고 이 인스턴스에 대한 글로벌 액세스 지점을 제공하기 위해 객체 지향 프로그래밍에서 사용되는 크리에이티브 설계 패턴입니다. 즉, 클래스가 단일 인스턴스만 갖도록 제한되며 해당 인스턴스는 전역에서 액세스할 수 있습니다. 이는 응용프로그램의 특정 구성요소에 대해 단일 진실 소스 또는 글로벌 참조 지점을 적용하려는 경우에 유용할 수 있습니다.

Java에서 Singleton 패턴은 클래스의 생성자를 비공개로 만들고 클래스의 단일 인스턴스를 반환하는 정적 메서드를 제공하여 구현할 수 있습니다. 이 정적 메서드는 클래스의 인스턴스가 한 번만 생성되고 이후에 클래스가 호출될 때마다 동일한 인스턴스를 반환합니다.

public class Singleton {
   private static Singleton instance = null;

   private Singleton() {}

   public static Singleton getInstance() {
      if (instance == null) {
         instance = new Singleton();
      }
      return instance;
   }
}

이 예에서 Singleton 클래스에는 전용 정적 인스턴스 변수와 전용 생성자가 있습니다. getInstance() 메서드는 Singleton 클래스의 단일 인스턴스를 반환합니다. 인스턴스 변수가 null이면 Singleton 클래스의 새 인스턴스가 생성되어 인스턴스 변수에 저장됩니다. 인스턴스 변수가 null이 아니면 기존 인스턴스가 반환됩니다.

Singleton 패턴의 주요 이점 중 하나는 클래스의 인스턴스가 하나만 생성된다는 것입니다. 이는 응용프로그램의 특정 구성요소에 대해 단일 진실 소스 또는 글로벌 참조 지점을 적용하려는 경우에 유용할 수 있습니다. 예를 들어 모든 로그가 단일 파일에 쓰이도록 로깅 클래스의 인스턴스가 하나만 있어야 할 수 있습니다.

Singleton 패턴의 또 다른 이점은 클래스의 단일 인스턴스에 대한 글로벌 액세스 지점을 제공한다는 것입니다. 이렇게 하면 클래스의 여러 인스턴스를 만들지 않고 클래스의 단일 인스턴스에만 액세스하면 되므로 코드가 간소화됩니다. 또한 클래스의 여러 인스턴스를 만드는 작업은 비용이 많이 들기 때문에 성능을 향상시키는 데도 도움이 있습니다.

그러나 싱글턴 패턴에는 몇 가지 잠재적인 단점이 있습니다. 주요 단점 중 하나는 클래스의 단일 인스턴스가 코드의 특정 부분을 분리하고 테스트하는 것을 어렵게 만들 수 있기 때문에 테스트를 더 어렵게 만들 수 있다는 것입니다. 또한 싱글턴 패턴은 클래스의 단일 인스턴스가 코드 전체에서 사용될 수 있기 때문에 코드를 더 긴밀하게 연결할 수 있습니다. 이로 인해 나중에 코드를 변경하거나 리팩터링하기가 더 어려워질 수 있습니다.

결론적으로, Singleton 패턴은 객체 지향 프로그래밍에서 유용한 설계 패턴으로, 클래스에 인스턴스가 하나만 있는지 확인하고 해당 인스턴스에 대한 글로벌 액세스 지점을 제공하는 데 사용할 수 있습니다. 이 패턴은 응용프로그램의 특정 구성요소에 대해 단일 진실 소스 또는 글로벌 참조 지점을 적용하려는 경우에 유용할 수 있습니다. 그러나 Singleton 패턴을 사용하기 전에 테스트를 더 어렵게 하고 코드를 더 긴밀하게 연결할 수 있으므로 Singleton 패턴의 장점과 단점을 따져보는 것이 중요합니다.

 

'공부자료 > 자바' 카테고리의 다른 글

Factory pattern  (0) 2023.02.04
자바 암호 구조 (Java Cryptography Architecture)  (0) 2023.02.04
Java Microservices  (0) 2023.02.04
Java Performance Tuning  (0) 2023.02.04
Java Garbage Collection 최적화를 위한 팁  (0) 2023.01.29

댓글