IT/자바

싱글톤 디자인 패턴

Beautifulkim 2018. 4. 26. 16:41

mymain 패키지

=============

package mymain;


import myutil.MySingleTon;


public class MyMain_Singleton {


public static void main(String[] args) {

// TODO Auto-generated method stub


for(int i=1; i<=10; i++)

{

//MySingleTon sington = new MySingleTon(); 매번부르고 사용한 후 버리고 이걸 반복

MySingleTon sington = MySingleTon.getInstance(); //딱 1번 호출

int res = sington.plus(i, i);//10번 부름

System.out.printf("%d + %d = %d\n", i, i, res);

}

}


}



============
myutil 패키지
=================
package myutil;

public class MySingleTon {
static MySingleTon single=null;
public static MySingleTon getInstance()
{
if(single==null) 
single = new MySingleTon();
return single;
}
//생성자
public MySingleTon() {
// TODO Auto-generated constructor stub
System.err.println("--MySingleTon--");
}
public int plus(int a, int b)
{
return a+b;
}
}

MySingleTon.java

MyMain_Singleton.java




아래 출처 - http://mkil.tistory.com/199


싱글톤(Singleton) 인스턴스

 

1. 싱글톤이란?

싱글톤 패턴은 하나의 프로그램 내에서 하나의 인스턴스만을 사용해야하는 상황에 주로 사용된다.

(어플리케이션 전체 영역에서 하나의 클래스의 단 하나의 인스턴스를 생성하는 것!)

환경설정 관리 클래스나커넥션 풀과 같이 pool 형태로 관리되는 클래스로 주로 공통 클래스에

사용되는 것이 일반적이다.

 

2. 그렇다면 why(사용할까 ??????????

예를들어 사용자 정보를 처음에만 로딩해주는 UserManager 가 있다고 치면매번 이 인스턴스를

생성하는 것은 자원 낭비 또는 인스턴스가 꼬이는 일이 생길 수도 있다.

 

3. 싱글톤 구현

싱글톤 구현에서 주의 깊게 보아야 될 부분은 생성자를 Private로 생성하여,

다른 외부 클래스에서 싱글톤 클래스를 new로 구성하지 못하게 하는 부분이다.

 

       /**

        * 싱글톤 인스턴스

         */

       private static UserManager INSTANCE = null;

        /**

        * 생성자를 private으로 선언하여 new 키워드  쓰게 .

         */

       private UserManager() {

               logger.debug("UserManager Initialized");

        }

      

       /**

        * 싱글톤 인스턴스를 반환한다.

        * @return popupManager      

        */

       public static UserManager getInstance() throws Exception {

               if ( INSTANCE == null )

                      INSTANCE = new UserManager();

              

               return INSTANCE;

       }     

 

싱글톤 클래스의 인스턴스를 타 클래스에서 사용하기 위해서는

getInstance()를 호출해야만 한다.

출처: http://mkil.tistory.com/199 [나비와꽃기린]