Java/JAVA

싱글톤(Singleton), getInstance() 메소드

Jenny_yoon 2023. 1. 4. 11:59
728x90
반응형
  • new()와 getInstance()의 차이
  • new()            : 객체를 계속계속 만들 수 있다.
  • getInstance()  : 싱글턴패턴, 하나의 인스턴스만 가지고 공유해서 쓴다.

 

싱글턴패턴

: 생성자를 private로 선언하여 다른클래스에서 해당 클래스의 인스턴스를 new로 생성하지 못하게 하고, getInstance()함수를 통해서 인스턴스를 갖도록 한다.

 

자바는 클래스들로 이루어져 있고, 매번 새로운 객체를 생성합니다. 하지만 매번 새로운 객체를 생성하는 것이 아닌 한번만 새로운 객체를 생성하고 그후에는 모든 클래스들이 동일한 객체(인스턴스)를 써야 하는 경우가 생긴다면 어떻게 할것인가에 대한 해답이 위에 나온 getInstance()라는 메소드입니다.

 

package what;
public class What {
	public static void main(String[] args) {
	Human h1 = Human.getInsetance();
	Human h2 = Human.getInsetance();
	System.out.println(h1==h2); //true
	}
}

class Human{
	//변수
	private static Human human = new Human(); 
   	//생성자
	private Human() {} 
	
   	//메소드(이 메소드를통해 private생성자를 가져옴)
	public static Human getInsetance() { 
	//static이 있으니까 객체없이 클래스명.메소드명으로 실행 
	//static 안붙은 메소드는 객체생성 후에 실행해야함
		return human;  //private Human을 여기 내부에서만 볼수있게
	}
}

* 참조 : https://hoon2kc.tistory.com/entry/getInstance-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

728x90
반응형