Programming

[JAVA] JAVA 싱글톤(Singleton) 사용하기

JMob 2015. 7. 19. 14:38
728x90
반응형

android 프로젝트를 진행하면서 싱글톤(Singleton)을 사용할 일이 있어서 정리합니다.

싱글톤은 디자인 패턴중에서 많이 사용하는 패턴 중 하나일겁니다.

싱글톤은 하나의 프로젝트에서 하나의 인스턴스만 사용해야 할 때 사용합니다.

JAVA에서 인스턴스를 생성하는 경우를 new 명령어를 사용하는데 이럴 경우 서로 다른 인스턴스가 생성 됩니다.

간단하게 String으로 예를 보면

String str1 = "aaa";

String str2 = "aaa";

의 경우 변수 str1와 str2는 같은 메모리 주소에 있는 "aaa"를 가리킵니다.

하지만 

String str1 = new String("aaa");

String str2 = new String("aaa");


와 같이 할 경우 같은 문자열이지먄 str1의 "aaa"와 str2 "aaa"는 다른 메모리 주소에 할당되어 다른 문자열 입니다.

그런데 싱글톤은 프로젝트에서 저렇게 여러 인스턴스를 형성하는것을 막는 방법입니다.

그래서 프로젝트 전체에서 공유 되는 데이터에서 사용됩니다. (환경설정 같은...)

JAVA에서 사용하는 방법은 다음과 같습니다.

public class Singleton {

private static Singleton singleton = null;

private String name = null;

private int age;

private Singleton(){

this.name = "Defaut Name";

this.age = 0;

}

static Singleton getInstance(){

   if(singleton == null )

{

singleton = new Singleton();

}

   return singleton;

}

public void setName(String name){        this.name = name; }

public void setAge(int age){         this.age = age; }

public String getName(){ return name; }

public int getAge(){ return age;     }

}


와 같이 하면 해당 인스턴스를 사용 할 때에는 getInstance()를 사용해서 받아와서 사용합니다.

물론 생성자가 private로 되어 있기 때문에new 명령어를 사용할 수 없습니다.

728x90
반응형