728x90
반응형
싱글톤 패턴(Singleton Pattern)
싱글톤 패턴이란?
싱글톤 패턴(Singleton Pattern)은 소프트웨어 디자인 패턴 중 하나로, 어떤 클래스가 최대 하나의 인스턴스를 가지고 이에 접근할 수 있는 전역적인 접근점을 제공하는 패턴이다. 이는 클래스의 인스턴스가 오직 하나만 생성되어야 하고, 그 인스턴스에 대한 전역적인 접근이 필요한 경우에 사용된다.
싱글톤 패턴의 특징
- 하나의 인스턴스: 클래스의 인스턴스는 오직 하나만 생성
- 전역적인 접근점: 어디서든지 그 인스턴스에 접근할 수 있는 전역적인 접근점을 제공
- 지연 초기화: 인스턴스가 필요할 때까지 생성을 지연시킴으로써 자원 절약
싱글톤 패턴의 장단점
- 장점
- 자원 절약: 인스턴스가 단 하나뿐이므로 자원 절약
- 전역적인 접근: 어디서든지 인스턴스에 접근할 수 있어 편리
- 단점:
- 전역 상태: 전역 상태를 가지고 있기 때문에 다른 부분에서 해당 인스턴스에 의존 가능성
- 테스트 어려움: 전역 상태를 가지고 있어 테스트가 어려울 수 있음
말이 어려운데 쉬운 말의 예시로 ..
싱글톤 패턴은 프로그래밍에서 특정한 클래스를 만들 때 사용하는 규칙이다.
이 규칙을 따르면 해당 클래스의 객체(인스턴스)가 항상 하나만 생성되고, 이 객체에는 어디서든지 쉽게 접근할 수 있는 방법이 마련이 된다.
만약 프로그램에서 어떤 기능을 하는 클래스가 여러 곳에서 쓰인다고 생각해봅시다. 이 클래스를 싱글톤으로 만들면, 이 클래스의 객체는 단 하나만 만들어지고, 그 객체에는 어디서든 접근할 수 있는 문을 열어두게 된다.
예를 들어, 가게의 문이 있다고 생각해보자.
그 가게에는 한 개의 문만 있고, 그 문을 통해서 어디서든지 들어갈 수 있다. 이 때, 그 가게는 싱글톤처럼 작동한다.
장점으로는 자원을 아끼고 편리하게 접근할 수 있지만
단점으로는 프로그램의 어느 곳에서든 접근할 수 있기 때문에 상태 관리에 조심해야 한다는 점이 있다.
위의 말을 간단하게 코드로 예시를 들어보면
예시 코드
public class Store {
private static Store instance;
private Store() {
// 가게의 문을 만들 때 해야 할 일들을 정의
}
public static Store getInstance() {
if (instance == null) {
instance = new Store();
}
return instance;
}
// 가게에서 제공하는 다양한 기능들
}
이런 식으로 코드를 짜놓으면 Store.getInstance()를 호출할 때마다 항상 동일한 Store 객체가 반환된다.
이렇게 하면 프로그램 전체에서 하나의 Store 인스턴스만 사용하게 되어 항상 같은 가게 문을 열고 닫는 효과를 얻게 된다.
이것이 싱글톤 패턴의 핵심 아이디어이다.
그리고 싱글톤은 무조건 static을 사용하는 것은 아니다. 하지만 인스턴스를 유지하기 위해 대부분/일반적으로 static을 사용한다.
728x90
반응형
'디자인패턴' 카테고리의 다른 글
[디자인패턴] 퍼사드 패턴(Facade Pattern)이란? | 민민의 하드디스크 - 티스토리 (0) | 2024.02.06 |
---|