
디자인패턴 시작하기를 보고 정리하기
하나의 클래스 타입에 대해 오직 하나의 객체만 만들어지는(보장하는) 패턴

접근 할 수는 있지만, 새로 생성할 수는 없다.

<<>> 으로 singleton으로 명칭
public class King {
/// private으로 생성자 선언, '나'외에는 생성 불가
private King(){}
/// private: '나'만 접근 가능
/// static: Class 이름 으로 접근 가능
private static King self = null;
/// synchronized: 멀티 스레드에서 호출시 문제 없도록 동기화 목적
public synchronized static King getInstance(){
if (self == null){
/// 한번도 생성된적 없으면 생성
self = new King();
}
return self;
}
public void say(){
System.out.println("I'm Only ONE!");
}
}
public class Main {
public static void main(String[] args){
//King king = new King(); // [ERROR] java: King() has private access in King
King king = King.getInstance();
king.say();
}
}