싱글턴(Singleton):자바 언어에서 JVM 내부에 생성되는 객체의 인스턴스 수를 하나로 국한시키고자 할 때 사용
private static MyObject instance = null;
public static MyObject getInstance ()
{
if (instance == null)
{
instance = new MyObject() ;
}
return instance;
}
private MyObject()
{
//객체생성에 필요한 초기화 작업을 여기서 수행...
}
MyObject 라는 이름의 객체를 만들기 위한 클래스를 정의하고 있다. 클래스의 생성자(constructor)가 프라이빗(private) 으로 선언되어 있기 때문에 MyObject의 인스턴스가 필요한 코드는 반드시 public으로 선언되어 있는 getInstace 메소드를 통해 접근해야 한다. getInstance 메소든 static으로 선언되어 있기때문에 MyObject.getInstace()처럼(객체 생성할 필요없이) 클래스에 대한 참조를 이용해서 접근 할수 있다.
연습문제: 위의 코드는 Thread-safe 일까?
패턴은 '생성적' '구조적' '행위적'으로 세 개의 범주로 구분되어진다.
- 프로그램의 '완성도'와 '미학'은 '패턴' 자체에 있는 것이 아닌 그 패턴을 이용하는 프로그래머의 능력과 자세에 달려있다.
refer to '프로그래밍은 상상이다'-임백준