- 전 시스템에 단 하나의 인스턴스만 존재하도록 구현
- ex) TimeZone
- static 키워드를 사용
[CompanyTest.java]
package singletonTest;
public class CompanyTest {
public static void main(String[] args) {
Company c1 = Company.getInstance();
Company c2 = Company.getInstance();
// error
// 싱글톤으로 구현되지 않음
//Company c3 = new Company();
System.out.println(c1);
System.out.println(c2);
}
}
[Company.java]
package singletonTest;
public class Company {
// default 생성자를 내가 생성하여 여러 개의 인스턴스를 생성할 수 없도록 static으로 선언
// 외부에서 Company 생성 불가!
private static Company instance = new Company();
private Company(){}
// 위에서 생성한 instance는 private으로 생성됨 객체를 외부에서 사용하도록 public한 메소드를 하나 생성해줌
// 객체를 생성하지 않고 메소드를 가져다 쓰기 위해서 static으로 생성
public static Company getInstance(){
if(instance == null){
instance = new Company();
}
return instance;
}
}