반응형
2.1 싱글톤 패턴이란?
싱글톤 패턴이란?
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
싱글톤 패턴은 일반적으로 데이터베이스 연결 모듈에 많이 사용된다.
하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 또한 싱글톤 인스턴스가 전역으로 사용되는 인스턴스이기 때문에 다른 클래스 간에 데이터 공유가 쉽다.
하지만 클라이언트가 구체 클래스에 의존하게 되며 의존성이 높아진다는 단점이 있다.
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
// 생성자는 외부에서 호출못하게 private 으로 지정해야 한다.
}
public static Singleton getInstance() {
return instance;
}
}
2.2 싱글톤 패턴을 사용하는 이유
싱글톤 패턴을 사용하면 어떤 이점이 있을까?
크게 두 가지가 있다.
1. 메모리 낭비가 적다.
최소 한 번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다.
2. 타 클래스 간의 데이터 공유가 쉽다.
싱글톤 인스턴스가 전역으로 사용이 되는 인스턴스이므로 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다.
2.3 싱글톤 패턴의 문제점
1. 테스트하기 어렵다.
싱글톤 인스턴스를 자원을 공유하고 있기 때문에 매번 인스턴스의 상태를 초기화시켜주어야 한다. 그렇지 않ㅇ으면 어플리케이션 전역에서 상태를 공유하기 때문에 테스트가 온전하게 수행되지 못한다.
2. 구현하는 코드가 많이 필요하다.
3. 모듈 간의 결합을 강하게 만들 수 있다.
이는 의존성 주입을 통해 모듈 간의 결합을 조금 더 느슨하게 만들어 해결할 수 있다.
반응형
'공부 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
[CS 스터디/디자인패턴] 4. 전략 패턴(Strategy Pattern) (0) | 2022.12.14 |
---|---|
[CS 스터디/디자인패턴] 3. 팩토리 패턴(Factory Pattern) (0) | 2022.12.14 |
[CS 스터디/디자인 패턴] 1. 디자인 패턴이란? (0) | 2022.12.14 |
[CS 스터디] 5.3 비선형 자료구조(그래프, 트리, 힙, 우선순위 큐, 맵, 셋, 해시 테이블) (0) | 2022.10.05 |
[CS 스터디] 5.2 선형 자료 구조 (배열, 연결리스트, 벡터, 스택, 큐) (1) | 2022.10.05 |