객체지향 프로그래밍을 위한 23가지 패턴이있는데, 유지보수가 용이하고 객체지향적인 방법으로 찾아내 정리한 패턴. 그 중 하나가 싱글톤 패턴.
프로그램을 하다보면 여러개의 인스턴스가 생성되면 문제가 발생하는 경우가 생긴다. 보통 클래스 1개에 여러 인스턴스 생성.
그렇지 않은 경우 문제가 발생하는 케이스가 있다.
예를들어 날짜, 회사는 사원수가 여러명일 수 있지만 회사라는 객체는 하나여야함.
이럴 때 싱글톤 패턴을 사용한다.
private Company() {}
private static Company instance = new Company();
public static Company getInstance() {
if(instance == null) {
instance = new Company();
}
return instance;
}
package ch18;
public class Company {
private static Company instance = new Company();
// 기본 생성자를 작성하지않으면 컴파일러가 자동으로 기본생성자를 public으로 생성해줌.
// 이대로 두면 외부에서 여러 회사를 생성할 수 있음.
// 싱글톤 패턴에서는 기본생성자를 private으로 하나 생성해준다.
private Company() {}
// static으로 선언해줘야 외부에서 클래스이름으로 접근할 수 있다.
public static Company getInstance() {
if(instance == null) {
instance = new Company();
}
return instance;
}
}
package ch18;
import java.util.Calendar;
public class CompanyTest {
public static void main(String[] args) {
/* 일반 메서드라면 원래는 인스턴스를 하나 생성해줘야 한다.
* Company compny = new Company(); <- 이렇게 먼저 작성해줘야함.
* 하지만 인스턴스를 만들지 않고 바로 가져다 쓰는 것.
*
* static의 경우는 클래스 이름을 가져다 사용해야 한다.
*/
Company compny1 = Company.getInstance();
Company compny2 = Company.getInstance();
// JVM이 할당해 준 힙메모리의 어드레스(주소)가 출력된다.
System.out.println(compny1);
System.out.println(compny2);
// 날짜 객체도 new로 제공되지 않는다 (빨간줄뜸)
// Calendar calendar = new Calendarl
Calendar calendar = Calendar.getInstance();
}
}