Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SBT
- docker
- Domain Driven Design
- nginx
- Clean Code
- hibernate
- 도메인주도설계
- Gradle
- Spring Batch
- Spring Boot
- design pattern
- intellij
- elastic search
- elasticsearch
- hdfs
- 제주
- apache storm
- 스프링 배치
- Spring
- Linux
- Angular2
- spark
- Spring XD
- DDD
- Storm
- Hbase
- 엘라스틱서치
- Java
- hadoop
- scala
Archives
- Today
- Total
욱'S 노트
Singleton - 유일한 인스턴스 만들기 본문
When Using It
인스턴스를 하나만 만들고 싶을때 사용하는 패턴이다.
일반적인 Stateless한 클래스의 경우 혹은 Stateful 하지만 변경을 할 수 있는 메소드가 노출되어 있지 않을때 사용한다.
Class Diagram
Sample Code
Caution
객체가 하나만 생성되기 때문에 Stateful 한 객체의 인스턴스를 생성할 경우 멀티스레드 환경에서 주의를 해야 한다. 여러 스레드가 동시에 사용할 경우 원하지 않는 상태 변경이 일어날 수 있다.
Advance Topic
정적 메소드와 변수를 쓰는 방법과 싱글턴의 차이점은 ? (출처 - Head First Design Pattern)
1. static 메소드와 변수를 사용할 경우 초기화 순서와 관련된 아주 복잡한 버그가 생길 수 있다.
2. 전통적인 싱글턴 패턴에서 활용할 수 있는 lazy-init을 사용하기 힘들다.
3. 전역변수를 사용하다보면 간단한 객체에 대한 전역 레퍼런스를 자꾸 만들게 되어 네임스페이스를 지저분하게 만든다.
인스턴스를 하나만 만들고 싶을때 사용하는 패턴이다.
일반적인 Stateless한 클래스의 경우 혹은 Stateful 하지만 변경을 할 수 있는 메소드가 노출되어 있지 않을때 사용한다.
Class Diagram
Sample Code
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
Caution
객체가 하나만 생성되기 때문에 Stateful 한 객체의 인스턴스를 생성할 경우 멀티스레드 환경에서 주의를 해야 한다. 여러 스레드가 동시에 사용할 경우 원하지 않는 상태 변경이 일어날 수 있다.
Advance Topic
정적 메소드와 변수를 쓰는 방법과 싱글턴의 차이점은 ? (출처 - Head First Design Pattern)
1. static 메소드와 변수를 사용할 경우 초기화 순서와 관련된 아주 복잡한 버그가 생길 수 있다.
2. 전통적인 싱글턴 패턴에서 활용할 수 있는 lazy-init을 사용하기 힘들다.
3. 전역변수를 사용하다보면 간단한 객체에 대한 전역 레퍼런스를 자꾸 만들게 되어 네임스페이스를 지저분하게 만든다.
'Methdology > Design Pattern' 카테고리의 다른 글
Prototype - 인스턴스 복사하기 (0) | 2012.04.10 |
---|---|
Abstract Factory - 공장 자체를 제공하자 (0) | 2012.04.09 |
Factory Method - 클래스에서 인스턴스 생성시 결합도 줄이기 (0) | 2012.04.09 |
Builder - 복잡한 인스턴스 만들기 (0) | 2012.04.04 |
Design Pattern 시작 (0) | 2012.04.04 |
Comments