전체 프로그램에서 단 하나만 생성되는 객체
-> 클래스 외부에서 new 연산자로 생성자 호출할 수 없도록 막아야함
-> 생성자 앞에 private 접근 제한자 작성
-> 자신의 타입인 정적 필드 하나 선언하여 자신의 객체 생성하여 초기화해줌
-> 외부에서 호출할 수 있는 정적메소드 getInstance() 선언하여 정적 필드에서 참조하고 있는 자신의 객체 리턴해줌
public class 클래스 {
// 정적 필드
private static 클래스 singleton = new 클래스();
// 생성자
private 클래스() {}
// 정적 메소드
static 클래스 getInstance() {
return singleton;
}
}
Example
public class ShopService {
private static ShopService singleton = new ShopService();
private ShopService() {}
static ShopService getInstance() {
return singleton;
}
}