RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'싱글턴 패턴'에 해당되는 글 1
2007/11/09  싱글턴 패턴 요약  
이전 블로그의 글을 옮겼습니다.


  • 정의
    • 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴
  • 용도
    • 쓰레드에서 참조되는 클래스, 쓰레드풀, 자원풀, 연결풀 등..
  • 기본적인 사용법
    • 생성자를 private으로 둔다.
      • 이렇게 하면 객체를 생성할때 new 할 수 없기때문에 다른 방법으로 객체를 생성해야 한다.
    • 싱글턴 패턴의 객체는 직접만드는것이 아니라 클래스에 객체의 참조를 요청하는 것이다.
      • 그러기 위해서 객체를 넘겨주는 정적 메서드와 참조를 객체를 저장하는 정적 변수가 필요하다.
    • 싱글턴 클래스는 정적 메서드를 통해 객체에 접근할 수 있는데, 이때 첫 요청이라면 new 를하고 이미 객체가 생성되어져 있다면 해당 참조를 리턴해 준다.
  • 쓰레드에서의 보호
    • volatile 키워드와 lock 키워드를 이용해서 인스턴스를 담아주는 변수를 보호해 줘야한다.
    • 그렇지 않으면 쓰레드내에서 두개의 메서드를 생성하려는 시도가 있을 수 있고 이는 곧 예외로 이어진다.
  • 기본적인 예제
using System;
using System.Configuration;

namespace Chapter05_Singleton
{
    public class Singleton
    {
        private static volatile Singleton uniqueInstance;
        private static object syncRoot = new object();

        private Singleton()                         // 싱글턴패턴은 생성자가 private
        {
        }

        public static Singleton GetInstance()       // 인스턴를 생성해서 넘겨주는 정적 메서드가 따로있음
        {
            if (uniqueInstance == null)             // 인스턴스가 없을때만 만들어줌
            {
                lock (syncRoot)                     // 쓰레드에서 보호하기 위하여 사용
                {
                    if (uniqueInstance == null)
                    {
                        uniqueInstance = new Singleton();
                    }
                }
            }
            return uniqueInstance;
        }
    }
}

2007/11/09 15:57 2007/11/09 15:57
http://lemonwidz.com/tc/trackback/11
전체 (23)
사진이야기 (4)
프로그래밍 (18)
  1. Nyaonge's Home  2011
    [C#] ?? 연산자(물음표 두개)
  1. 2012/03 (1)
  2. 2011/12 (2)
  3. 2009/07 (1)
  4. 2009/04 (1)
  5. 2009/03 (9)