Program/Android Java

new 와 getInstance() 와의.. 차이.

너구리V 2012. 7. 18. 00:04

NewObject obj = new NewObject();

 

와 같은 방식으로 선언하여 사용하는 것과..

 

NewObject obj = NewObject.getInstance();


생성자를 통한 객체생성은 일반적인 객체생성법이구... 
getInstance()와 같이 특정 메소드를 통해서 인스턴스를 생성하는방법은 
보통 싱글톤 패턴을 적용한 경우 많이 볼 수 있습니다. 

이유인즉, 요청시마다 동일한 객체를 매번 생성하지 않고, 
최초 호출시 jvm에 static하게 생성하고자 하는 클래스의 인스턴스를 
생성해서 사용하고자 함이 이유입니다. 

앞서 언급한 싱글톤 패턴은 좀 더 자세히 찾아 보시길 바라구요... 

일반적인 싱글톤 패턴을 본다면 

public class Test { 
static Test instance; 

//외부에서 생성을 못하도록 Default생성자는 private으로 선언합니다. 
private Test{} 

//특별히 메소드명이 getInstance가 아니어두 상관없습니다. 
//getInstance를 싱크로나이즈(동기화) 처리하는 경우도 많이 있습니다. 
public static Test getInstance() { 
//instance가 null인 경우에만 객체를 생성합니다. 
if (instance == null) { 
instance = new Test(); 

return instance; 



정리하자면, 
불필요한 메모리 낭비를 막기 위함과, 
jvm내에 유일하게 객체생성을 한 후 사용해야 하는 경우에 
싱글톤 패턴을 사용하고 
질문하신 내용은 일반적인 객체생성과 싱글톤 패턴을 통한 
객체생성의 차이점이라 볼 수 있습니다.

반응형