모든지 기록하자!

[Java] singleton 패턴 본문

Java

[Java] singleton 패턴

홍크 2021. 5. 13. 20:44
728x90

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

아래 예제로 간단하게 알아보자

 

public class Company {

	//전체에서 유일하게 사용 할 인스턴스 
	private static Company instance = new Company(); 
	
	private Company(){}
	
    //외부에서 사용하기 위해 public method생성
    //객체를 생성하지 않고 호출하기 위해 static으로 선언
	public static Company getInstance() {
		if(instance == null) // instance가 null일경우 하나를 생성해준다.
			instance = new Company();
		return instance;
	}
	}

 

싱글톤 패턴에서는 생성자를 반드시 명시적으로 만들고 그 접근 제어자를 private로 지정해야 한다.

명시적으로 생성자를 구현해놓지 않으면 여러 개의 인스턴스가 생성될 수 있기 때문이다.

그렇기 때문에 직접 Default생성자를 구현하고 외부에서 생성자를 호출하지 못하게 priavate로 선언한다.

 

외부에서 사용하기 위해 public method를 생성한다. 

객체를 생성 후에 method를 호출해야 하기 때문에 객체를 생성하지 않고 호출하기 위해 static으로 선언한다.

 

 

public class CompanyTest {

	public static void main(String[] args) {

	Company c1 = Company.getInstance();
	// 클래스 이름으로 getInstance() 호출하여 참조변수 대입	
	Company c2 = Company.getInstance();
		
        Company c3 = new Company(); //error
        
		System.out.println(c1 == c2); //true
		// c1의 값과 c2의 값은 동일하다
	}
}

singleton 패턴으로 객체를 생성했기 때문에 c1과 c2의 값은 동일하다.

 

 

728x90
Comments