소프트웨어 개발/Design Pattern

⑪ 디자인 패턴(Design Pattern) - Single Ton

늘근이 2014. 10. 19. 22:28

싱글톤 패턴.

보통의 클래스는 new를 이용해서 새로운 객체를 생성하고 그것을 이용하게 된다. 다만, 단순한 프로그램의 경우에는 굳이 패턴들에대해 고민하지 않고 main에서 new를 한번 해준다음에 필요한 작업을 한다. 하지만 여러 클래스와 산재해 있는 함수에서 같은 객체에 접근해야할 필요가 있을 수 있다. 그 예로, 안드로이드 프로그램같은 경우, 대부분 VIEW하나에 public 클래스가 하나씩 존재한다. 하지만, 프로그램을 개발하다 보면 객체를 공유해서 써야하는 경우가 있다. 파일시스템이나 데이터베이스에서 가져온 데이터를 메모리에 올려서 쓰게 되는데, public class가 달라져버려 new로는 공유 데이터를 접근하지 못한다. 따라서 사용자의 객체 생성을 생성자에 pricava예약어로 막고, 프로그램이 로딩될때 static을 이용해 정적 객체를 하나 생성하여 사용자가 호출할때마다 그 객체를 넘겨주는 방식으로 설계를 하게 된다. 보통은 getInstance()를 이용해 객체를 넘겨주게 된다. (다만 정말 자주쓰이는 Calendar.getInstance()는 싱글톤형식이 아닌 객체를 계속 생성해 넘겨주는 방식으로, 함수명이 좀 잘못지어진 감이 있어 혼란하다)

public class Singleton {

private static Singleton manager = new Singleton();

private Singleton(){

 

}

 

public static Singleton getInstance(){

return manager;

}

 

}

 

public static void main(String[] args) {

 

}

 

public void TestA{

Singleton singleton1 = Singleton.getInstance();

 

}

 

public void TestB{

Singleton singleton2 = Singleton.getInstance();

}

출처 : gorakgarak.com