프로그래밍을 하다보면 여러개의 인스턴스를 만들었을 때 문제가 발생하는 경우가 존재한다.
(ex. 동일한 날짜를 표시하는 객체, 하나의 회사라는 객체)
이러한 경우 프로그램 내에 단 하나의 인스턴스만 생성하여 사용하는 싱글톤 패턴을 사용한다.
싱글톤 패턴은 static variable, method를 활용하여 구현할 수 있다.
package ch18;
public class Company {
/* 생성자를 따로 지정안하면 default생성자가 public으로 생성되는데
singleton에서는 외부에서 마음대로 사용하지못하도록 private으로 생성자를 생성한다.
그리고 유일한 인스턴스는 내부에서 만든다.
*/
private Company() {
}
private static Company instance = new Company();
//유일한 인스턴스는 내부에서 만든다.
// 인스턴스를 사용할 수 있도록 해주는 public함수
// 싱글톤 패턴에서 유일한 인스턴스이기 때문에 미리 생성하고 외부에서 호출해야해서 static으로 지정한다.
public static Company getInstance() {
if(instance == null) {
instance = new Company();
}
return instance;
}
}
package ch18;
public class CompanyTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Company company1 = Company.getInstance();
Company company2 = Company.getInstance();
System.out.println(company1);
System.out.println(company2);
// 하나의 인스턴스로 생성한 것이기 때문에 주소공간이 같다.
}
}