백엔드
[패턴] 싱글톤 패턴 (Singleton pattern)
음그냥
2025. 3. 3. 00:20
728x90
반응형
public class Company {
private static Company instance = new Company(); // ① 클래스 로딩 시 객체 생성
private Company() {} // ② private 생성자 (외부에서 new 사용 불가)
public static Company getInstance() {
if( instance == null) { // ③ 항상 false이므로 실행될 일 없지만 방어적인 코드작성
instance = new Company();
}
return instance; // ④ 항상 최초에 생성된 객체 반환
}
}
public class Company {
private static Company instance; // 초기화 X (null 상태)
private Company() {}
public static Company getInstance() {
if (instance == null) { // 최초 호출 시에만 new Company() 실행
instance = new Company();
}
return instance;
}
}
- 생성자를 private으로 선언하여 외부에서 객체 생성방지 -> 메서드를 static으로 만들어서 객체생성안해도 생성가능
- 외부에서 Company.getInstance(); 로 호출시 단일객체로 돌려씀
- 세계날짜, 달력, 사원명부같이 하나로 통일해야하는 정보에 사용됨
public class CompanyTest {
public static void main(String[] args) {
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
//Calendar calendar = Calendar.getInstance(); //자바에서 Calendar클래스도 싱글톤패턴임
}
}
728x90
싱글톤패턴의 클래스 다이어그램
클래스명
멤버변수
생성자, 메서드명
순서로 작성되고 +는 public, -는 private임
728x90
반응형