개발자 데뷔!

12. [Java] 싱글톤(Singleton) 패턴 (static 응용) 본문

프로그래밍 언어/Java

12. [Java] 싱글톤(Singleton) 패턴 (static 응용)

물꼮이 2022. 2. 1. 08:08

 

싱글톤은 
'디자인 패턴(;Design pattern)' 의 
한 종류이다.

 

디자인 패턴 

 : 객체지향 프로그램을 더욱 유연하고 재활용성 높도록 리팩토링하는 패턴. 

  방법론의 일종이고, 여러 종류가 있다. 싱글톤은 자주 쓰이는 디자인 패턴 중 하나다.


싱글톤 패턴

 : 인스턴스를 단 하나만 생성하는 디자인 패턴.

   static으로, 프로그램 전반에서 사용하는 인스턴스를 하나만 구현한다. 

 

싱글톤 패턴 만들기

싱글톤 패턴을 만드는 방법은 간단히 다음과 같다. 

1. 생성자를 private으로 만든다.
2. 클래스 내부에 static으로 유일한 인스턴스를 생성한다.
3. 유일한 인스턴스를 외부에서 참조할 public메서드를 만든다.
4. 실제 사용시, 3번의 public 메서드를 사용해 접근한다. 

- (1) 기본 생성자는 항상 public 으로 생성되므로, 반드시 생성자를 명시적으로 private으로 만들어야 한다. 

     외부 클래스에서 마음대로 인스턴스를 생성할 수 없도록, 생성자를 private으로 만든다. 

- (2) 유일한 인스턴스는 외부에서 접근하지 못하도록 static, private으로 설정한다.

- (3) 인스턴스를 외부에서 사용해야 하지만, 인스턴스와 상관없이 호출할 수 있어야 하기 때문에,

      메서드는 static, public으로 설정한다.

- (4) 인스턴스를 항상 메서드로 받아와서 사용하는 것이 singleton 패턴의 핵심이다. 

 

 

 

ex)

싱글톤 패턴 간단한 예제

package singleton;

public class Company {
	// 2. static 인스턴스 생성
	private static Company instance = new Company();
    
	// 1. private 생성자
	private Company(){}
	
	// 3. public 메서드
	public static Company getInstance(){
		if(instance == null){
			instance = new Company();
		}
		return instance;
	}
}

싱글톤 패턴 예제의 사용 

package singleton;

public class CompanyTest {
	// static 메서드 사용 
	public static void main(String[] args) {
		// 4. 앞서선언한 public 메서드로 접근해 사용 
		Company myCompany1 = Company.getInstance();
		Company myCompany2 = Company.getInstance();
		
		System.out.println( myCompany1 == myCompany2 );
	}
}