반응형
싱글톤 패턴(Singleton Pattern
)은 특정 클래스의 인스턴스가 단 하나만 존재하도록 보장하고, 그 인스턴스에 대한 전역적인 접근 방법을 제공하는 디자인 패턴입니다. 주로 전역 객체가 필요한 경우(예: 데이터베이스 연결, 설정 관리 등)에 사용됩니다.
java
public class Singleton {
// 클래스 내부에 인스턴스를 저장
private static Singleton instance;
// 외부에서 인스턴스화 금지
private Singleton() {}
// 인스턴스가 없다면 생성하고, 이미 있으면 그 인스턴스를 반환
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
python
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
return cls._instance
# 사용 예시
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # True
cpp
#include <iostream>
class Singleton {
private:
static Singleton* instance;
// 생성자를 private으로 지정해 외부에서 인스턴스화 못하게 함
Singleton() {}
public:
// 인스턴스를 반환하는 정적 함수
static Singleton* getInstance() {
if (!instance) {
instance = new Singleton();
}
return instance;
}
};
// 초기화
Singleton* Singleton::instance = nullptr;
// 사용 예시
int main() {
Singleton* singleton1 = Singleton::getInstance();
Singleton* singleton2 = Singleton::getInstance();
std::cout << (singleton1 == singleton2) << std::endl; // 1 (true)
return 0;
}
javascript
class Singleton {
constructor() {
if (!Singleton.instance) {
Singleton.instance = this;
}
return Singleton.instance;
}
}
const singleton1 = new Singleton();
const singleton2 = new Singleton();
console.log(singleton1 === singleton2); // true
kotlin
object Singleton
// object 키워드를 사용한 Singleton 객체는 코틀린 컴파일러가 자동으로 단일 인스턴스를 생성
fun main() {
val singleton1 = Singleton
val singleton2 = Singleton
println(singleton1 === singleton2) // true
}
위의 각 예제 코드에서 보듯이, 싱글톤 패턴은 클래스의 인스턴스 생성을 제어하여 단일 객체만 생성하는 방식입니다.
- 패턴 목록은 다음 글을 참고하시기 바랍니다.
728x90
반응형
'Designing Software' 카테고리의 다른 글
팩토리 메서드(Factory Method) 패턴 (0) | 2024.11.14 |
---|---|
개방-폐쇄 원칙(Open-Closed Principle, OCP) (0) | 2024.11.14 |
소프트웨어 패턴 목록 (0) | 2024.11.14 |
로깅 및 에러 핸들링 전략: 안정성과 유지보수성 향상 방안 (0) | 2024.11.12 |
소프트웨어 설계 원칙을 활용한 인터페이스 설계 (0) | 2024.11.12 |