AiPE
객체지향에서의 싱글톤 패턴(Singleton Pattern) 본문
반응형
싱글톤 패턴(Singleton Pattern)은 디자인(쉽게, 프로그램 설계라고 보면 된다) 패턴 중 하나로,
어떤 클래스가 최대 한 번의 인스턴스만을 갖도록 보장하는 패턴이다.
이는 클래스의 인스턴스를 하나만 생성하여 전역적으로 접근할 수 있도록 하는 것을 목적으로 한다.
"전역적인 접근"은 무엇을 의미하는가? |
전역 상태를 유지한다는 것은 프로그램의 어느 곳에서나 접근 가능한 상태를 말한다. 전역 상태를 유지하면 객체 간의 데이터 공유가 용이해지고, 설정값이나 상태 정보의 일관성을 유지할 수 있으므로 여러 곳에서 공유된 데이터나 설정값을 저장할 때 유용하다. 싱글톤 패턴을 사용하면 클래스의 인스턴스가 하나만 존재하므로, 해당 인스턴스의 상태는 어디서든 접근할 수 있게 된다. |

싱글톤 패턴을 구현하는 방법은 보통 다음과 같다.
① 생성자를 private으로 선언 클래스의 생성자를 외부에서 접근할 수 없도록 private으로 선언한다. 이렇게 하면 외부에서 직접적으로 객체를 생성하는 것을 막을 수 있다. "아니 전역적인 접근 가능 상태를 유지한다면서 외부에서 접근하는 것을 막는다고?"라고 생각할 수 있겠지만 생성자를 private로 선언하는 것은 외부에서 클래스의 내용에 대해 접근하는 것을 막는다는 것이다. 해당 클래스에 인스턴스 출력을 요구하는 것은 여전히 할 수 있다. 즉, 외부에서는 싱글톤 패턴으로 선언한 클래스로 만들어진 결과(인스턴스)만을 받아 볼 수 있는 것이지, 그 결과(인스턴스)의 생성 과정에 관여할 수 없다. ② 인스턴스를 저장할 정적 변수 선언 클래스 내부에 정적(static) 변수를 선언한다. 이는 유일한 인스턴스를 저장하는 역할을 한다. ③ 인스턴스를 반환하는 정적 메서드 구현 유일한 인스턴스를 반환하는 정적(static) 메서드를 구현한다. 이 메서드는 클래스의 정적 변수에 접근하여 인스턴스를 생성하거나 반환하게 된다. 이때, 인스턴스가 이미 생성되었다면 새로운 인스턴스를 생성하지 않고 기존의 인스턴스를 반환하므로, 싱글톤 패턴의 클래스는 유일한, 일관된, 동일한 인스턴스만을 반환할 수 있게 된다. |
아래는 Java로 싱글톤 패턴을 구현하는 예시이다.
ChatGPT에게 부탁해 가져왔다.
public class Singleton {
// 정적 변수로 유일한 인스턴스를 저장
private static Singleton instance;
// private 생성자로 외부에서 인스턴스 생성 방지
private Singleton() {
}
// 유일한 인스턴스를 반환하는 정적 메서드
public static Singleton getInstance() {
// 인스턴스가 없을 때만 생성
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
반응형
'[XiBBaL] Study > Java' 카테고리의 다른 글
객체지향에서의 다형성(Polymorphism) - 메소드 다형성과 객체 다형성 (1) | 2024.04.03 |
---|---|
Java에서 "final" 키워드의 역할 (1) | 2024.04.03 |
Getter 메서드와 Setter 메서드 (0) | 2024.04.03 |
객체지향에서의 상속(Inheritance)과 오버라이딩(Overriding) (1) | 2024.04.03 |
클래스(Class) vs 객체(Object) vs 인스턴스(Instance) vs 메서드(Method) (1) | 2024.04.03 |