Singleton Pattern(싱글톤 패턴) with JAVA

haaaalin·2021년 12월 20일
0

Singleton Pattern(싱글톤 패턴)이란?

Singleton Pattern 은 디자인 패턴 중 하나입니다. 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴입니다. 즉, 클래스를 통해 생성할 수 있는 객체는 오직 하나여야 하고, 더 생성할 수 없어야 합니다.

싱글톤패턴

📝사진 설명

Singleton Pattern 을 간단하게 나타내는 사진입니다.
- 표시는 접근 제어 지시자 private 를, + 표시는 public 을 의미합니다.

자바로 구현한 간단한 Singleton Pattern

🔔 코드

public class Company {
	
	private static Company instance = new Company();
	private Company() { }
	
	public static Company getInstance() {
		if(instance == null) {
			instance = new Company();
		}
		return instance;
	}
}


📝 설명

여기서 Company 는 앞서 말했던 하나의 객체만 생성할 수 있어야하는 클래스입니다. 그 말은 Company 객체를 생성할 수 없도록 생성자를 막아주어야 한다는 말입니다.

private Company( )  {  }

이렇게 위와 같이 생성자의 접근제어 지시자를 private 로 지정하여 함부로 생성할 수 없도록 만들어 줍니다.

우리가 생성할 수 있는 단 하나의 객체를 어떻게 생성할 수 있지?

라는 의문을 가지실 것입니다.

그 단 하나의 객체는 미리 private static 변수로 미리 선언해 놓습니다.
(static 변수에 관해서는 다른 글에서 다루도록 하겠습니다. )

static 변수는 특이한 점이 객체를 따로 생성하지 않고도 참조할 수 있습니다. Company.instance 이런 식으로 클래스의 이름으로 참조할 수 있지만, 여기서는 private 변수로 선언해 놨으니 따로 getter 함수가 필요합니다.

public static Company getInstance() {
	if(instance == null) {
		instance = new Company();
	}
	return instance;
}

이렇게 위와 같이 instance를 리턴하는 함수를 따로 작성해 주어야 우리가 그 객체를 사용할 수 있습니다.

🔔 코드

public static void main(String[] args) {
		
	Company company1 = Company.getInstance();
	Company company2 = Company.getInstance();
		
	System.out.println(company1);
	System.out.println(company2);
		
}

📤 결과

위 코드를 실행한 결과는

Company@28a418fc
Company@28a418fc


이렇게 하나의 객체만을 사용하는 것을 알 수 있습니다.



🔎 참고

profile
한 걸음 한 걸음 쌓아가자😎

0개의 댓글