싱글톤 패턴 (Singleton Pattern)
디자인 패턴싱글톤 패턴이 무엇인가?
- 싱글톤 패턴은 인스턴스를 딱 하나만 만들어 사용하기 위한 패턴이다.
- 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같이 여러 개를 만들었을 때 불필요한 자원 낭비가 일어나는 부분을 방지할 수 있다.
싱글톤 패턴을 어떻게 적용해야 하나?
- new를 실행할 수 없도록 생성자에 private 접근 제한자를 사용한다.
- 유일한 단일 객체를 반환할 수 있는 정적 메소드를 생성한다.
- 유일한 단일 객체를 참조할 정적 참조 변수를 사용한다.
코드를 보면서 어떻게 사용하는 것인가 다시 확인하자.
package 싱글톤패턴;
public class Singleton {
static Singleton sigletonObject;
private Singleton() {};
public static Singleton getInstance() {
if (singtonObject == null) {
singletonObject = new Singleton();
}
return singletonObject;
}
}
new를 실행할 수 없도록 Singleton 생성자에 private을 사용했다. 이렇게 한다면 외부에서 new Singleton() 메소드를 호출할 수가 없다.
유일한 단일 객체를 참조할 정적 참조 변수인 singletonObject를 사용한다. 추후 getInstance 메소드를 호출하게 되면 이 참조 객체를 반환한다.
유일한 단일 객체를 반환할 수 있는 정적 메소드가 필요하며 여기서는 getInstance라는 메소드를 사용했다. 일반적으로 싱글톤 패턴을 사용할 때 이름은 getInstance로 하는 듯하니 싱글톤 패턴을 사용할 때 고민하지말고 getInstance를 사용해도 무방하다.
마지막으로, 싱글톤 패턴 특징을 간략하게 설명하고, 마무리한다.
싱글톤 패턴
기본적으로 쓰기 가능한 속성을 갖지 않는 것을 대상으로 적용하며, private 생성자를 가지며, static 키워드 단일 객체 참조 변수를 사용하고, 단일 객체를 반환할 수 있는 getInstance 메소드를 사용한다.
guy-who-writes-sourcecode.tistory.com/30
'디자인 패턴' 카테고리의 다른 글
팩터리 메소드 패턴(Factory Method Pattern) (0) | 2020.12.07 |
---|---|
템플릿 메소드 패턴 (Template Method Pattern) (0) | 2020.12.07 |
데코레이터 패턴(Decorator Pattern) (0) | 2020.12.03 |
프록시 패턴(Proxy Pattern) (0) | 2020.12.03 |
어댑터 패턴(Adapter Pattern) (0) | 2020.12.03 |