static 응용 - 싱글톤 패턴(singleton pattern)

일상 코딩·2022년 8월 5일

01.싱글톤 패턴이란?

  • 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴입니다.
  • static 변수, 메서드를 활용하여 구현 할 수 있습니다.

02.싱글톤 패턴으로 회사 객체 구현하기

Company.java

package ch17;

public class Company {
	
	// 클래스 내부에 유일한 private 인스턴스 생성
	private static Company instance = new Company();
	
	// 생성자는 private으로 선언
	private Company() { }
	
	// 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공
	public static Company getInstance() {
		if(instance == null) instance = new Company();
		return instance;
	}
}
  • 여기서 getInstance() 메서드는 반드시 정적 메서드로 선언 해줘야 합니다.
  • 그 이유는 static 멤버가 먼저 컴파일되기 때문에, static 멤버의 컴파일 시점에서는 static이 아닌 메서드나 필드는 정의되지 않기때문입니다.
  • 일반 메서드는 인스턴스를 먼저 생성한뒤 메서드를 호출 할 수 있지만 정적 메서드는 외부에서 클래스명.정적 메서드명로 사용할 수 있습니다.

ComapnyTest.Java

package ch17;

import java.util.Calendar;

public class CompanyTest {

	public static void main(String[] args) {
		
        // 이미 Compnay 생성자가 private으로 선언되어 있기 떄문에 생성자를 이용한 인스턴스 생성 불가
        Company company3 = new Company();
		// 인스턴스를 따로 생성하지 않고 클래스명.정적 메서드로 사용 가능
		Company company1 = Company.getInstance(); // 외부에서 유일하게 인스턴스를 참조할 수 있는 public 메서드를 이용
		Company company2 = Company.getInstance();
		
		System.out.println(company1);
		System.out.println(company2);
		
		//	Calendar calendar = Calendar.getInstance();
	}
}

출력 결과

  • company1company2가 모두 같은 인스턴스 주소값을 참조하고 있다는 것을 볼 수 있습니다.
  • 이처럼 싱글톤 패턴은 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴입니다.

UML

profile
일취월장(日就月將) - 「날마다 달마다 성장하고 발전한다.」

0개의 댓글