취업과 기본기 튼튼/빽 투더 기본기
[디자인 패턴 2편] 생성 패턴, 싱글톤(Singleton)
흠시
2019. 11. 21. 14:51
1. 개념
싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.
1.1. 장점
- 하나의 인스턴스를 사용 -> 메모리 낭비를 방지할 수 있음
- 전역 인스턴스 -> 다른 클래스의 인스턴스들이 데이터를 공유
1.2. 단점
- 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우,
SOLID 원칙 중 SRP, OCP 원칙에 위배됨. - 즉, 수정과 테스트가 어려워짐
- 꼭 필요한 경우아니면 지양해야 함
1.3. 활용 상황
- 공통된 객체를 여러 개 생성해서 사용해야하는 상황
- 전역에서 사용될 하나의 객체를 만들어야하는 상황
- ex. DBCP(Database Connection Pool), 로거(Logger)
2. 구조
3. 코드
// SingletonPatternDemo.java
public class SingletonPatternDemo {
public static void main(String[] args) {
// 항상 getter 로 객체를 받아와야 함.
SingleObject object = SignleObject.getInstace();
}
}
// SingleObject.java
public class SingleObject {
private static SingleObject instance = new SingleObject();
// 생성자는 내부에서만 호출되게 한다.
private SingleObject(){}
// 외부에서 객체를 받아갈 수 있는 방법은 getInstance() 가 유일하다.
public static SingleObject getInstance() {
return instance;
}
}