1. 싱글턴 패턴(singleton pattern) 이란?
single은 하나, 혼자, 단독 등의 뜻을 가지고 있습니다.
마찬가지로 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다.
한정된 메모리 자원에서 쓰기 좋은 패턴입니다.
간단한 구조 이지만 다이어 그램으로 표현해보면 다음과 같이 표현 가능합니다.
2. 싱글턴 패턴(singleton pattern) 특징?
싱글턴 패턴은 다음과 같은 상황에서 쓰기 좋습니다.
1. 메모리 자원이 한정적일 경우
2. 데이터 공유 강화 측면(하나의 전역 인스턴스에서 처리하기에 데이터 공유가 유립니다.)
3. 최초 호출은 길지만 이후 속도가 빨라야할 경우(주로 웹페이지에서의 경우입니다.)
이러한 특징 덕에
메모리 자원 절약, 데이터 공유 강함 등의 장점이 있지만
단점도 명확합니다.
1. 의존 관계 때문에 구현체 클래스에 의존도가 높아지고 이는 OCP 원칙을 위반한 요소로도 발전할 수 있습니다.
2. 멀티쓰레드환경에서는 동기화처리가 필수적으로 들어가야한다.
3. 이후의 코드 유연성이 상당히 떨어지기 때문에 기능 추가 등이 어렵다.
등이 있습니다.
3. 싱글턴 패턴(singleton pattern) 구현
싱글턴 패턴을 간략하게 구현해 보면 다음과 같습니다.
Singleton
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
public String getDescription() { return "I'm a classic Singleton!"; }
}
SingletonClient
public class SingletonClient {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
System.out.println(singleton.getDescription());
}
}
'Design-Pattern' 카테고리의 다른 글
다른 기기라고 걱정하지 마세요 호환은 중요하니까요 어댑터 패턴(adapter pattern) (0) | 2023.02.05 |
---|---|
지금 부터 내가 명령한다! 커맨드 패턴(command pattern) (0) | 2023.02.05 |
빵처럼 객체를 구워내자! 팩토리 패턴(factory pattern) (0) | 2023.02.04 |
개체를 아름답게 꾸미자! 데코레이터 패턴(decorator pattern) (2) | 2023.02.04 |
빨리 객체에게 연락해! 옵서버 패턴(observer pattern) (0) | 2023.02.03 |