각진 세상에 둥근 춤을 추자

[Java] Singleton 본문

Java

[Java] Singleton

circle.j 2022. 9. 18. 00:02

객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤 패턴 (Singleton pattern)이라고 한다.

싱글톤 패턴은 static을 응용하여 프로그램 전반에서 사용하는 인스턴스를 하나만 구현하는 방식이다.

 

싱글톤 패턴으로 회사 클래스를 구현해 본다.

 

 


 

1. 생성자를 private로 만들기 

 

접근 제어자를 private로 지정한다.

package ch06_5;

public class Company {

	private Company() {}
	
}

 

 

2단계: 클래스 내부에 static으로 유일한 인스턴스 생성하기

 

1단계를 통해 외부에서 인스턴스를 생성할 수 없도록 하였다. 

프로그램에서 사용할 유일한 인스턴스를 생성한다. 또한 private로 선언하여 외부에서 인스턴스에 접근하지 못하도록 제한한다.

 

package ch06_5;

public class Company {

	// 유일하게 생성한 인스턴스
	private static Company instance = new Company(); 
	
	
	private Company() {}
		
}

 

 

3. 외부에서 참조할 수 있는 public 메서드 만들기

 

private로 선언한 유일한 인스턴스를 외부에서도 사용할 수 있도록 설정한다.

이를 위해서는 public 메서드를 생성한 후 인스턴스를 반환한다.

이때, 인스턴스를 반환하는 메서드인 getInstance()는 반드시 static으로 선언해야 한다.

 

package ch06_5;

public class Company {

	// 유일하게 생성한 인스턴스
	private static Company instance = new Company(); 
	
	private Company() {}
	
	public static Company getInstance() {
		if(instance == null) {
			instance = new Company();
		}
		return instance;
	}
		
}

 

(+) 실제로 사용하는 코드 만들기 

 

외부에서는 Company를 생성할 수 없으므로 static으로 제공되는 getInstance() 메소드를 호출한다.

변수의 주소 값을 비교하여 본다.

 

package ch06_5;

public class CompanyTest {
	public static void main(String[] args) {
		
		Company c1 = Company.getInstance();
		Company c2 = Company.getInstance();
		
		System.out.println(c1 == c2);
		
	}
}

 

'Java' 카테고리의 다른 글

[Java] 객체 배열  (0) 2022.09.18
[Java] 배열  (0) 2022.09.18
[Java] 변수 유효 범위  (0) 2022.09.17
[Java] static 변수  (0) 2022.09.17
[Java] this를 이용하여 객체 간 협력하기  (0) 2022.09.17