2012-01-26 2 views
0

이이 정적 이유싱글 톤 클래스에서 인스턴스 멤버가 정적 인 이유는 무엇입니까?

public sealed class Singleton 
{ 
    static Singleton instance=null; 
    static readonly object padlock = new object(); 

    Singleton() 
    { 
    } 

    public static Singleton Instance 
    { 
     get 
     { 
      lock (padlock) 
      { 
       if (instance==null) 
       { 
        instance = new Singleton(); 
       } 
       return instance; 
      } 
     } 
    } 
} 

내 질문 static Singleton instance=null;하는 싱글 톤 클래스?

+0

이것은 특히 닷넷의 (현재) threadsafe, performant 싱글 톤 패턴과 같지 않습니다. (나는 그것이 패턴을위한 MSDN P & P 코드임을 깨닫는다.) See @JonSkeet http://csharpindepth.com/Articles/General/Singleton.aspx –

+0

그렇지 않은 경우 싱글 톤이 아니기 때문입니다. –

답변

6

한 (정적) 예를 이제까지 싶기 때문에

0

정적 일 필요가 없으므로 이름이 하나만있는 것입니다. 그리고 나는 그것의 인스턴스의 수천을 만들 수 있습니다.

+1

개인 생성자를 사용하면 수천 개의 인스턴스를 생성 할 수 없습니다. –

+0

생성자를 사용하면 단일 인스턴스를 만들 수 없기 때문에 단일 인스턴스를 아무런 이유없이 사용할 수 있습니다. – TomTom

5

정적 속성 (인스턴스) 내에서 변수를 참조하고 있으며 정적 메서드 또는 속성 내에서 인스턴스 변수를 참조 할 수 없기 때문에

싱글 톤을 갖는 아이디어는 실행중인 모든 시간에 오직 하나의 인스턴스를하는 것입니다. 당신은 단지 프로그램

0

은 '예'필드는 유일한 인스턴스의 레퍼런스를 보유하고 있습니다. 그 범위는 클래스 자체가 아니라 특정 인스턴스되어야하기 때문에

그것은는 정적 변수 내에 저장된다.

0

그것은 따라서 "단일"패턴 때문에 싱글 타입의 모든 인스턴스가 동일한 변수를 사용하는 정적이다.

1

싱글 톤의 목적은 해당 객체의 인스턴스를 하나만 가지는 것입니다 [1]. 첫 번째 액세스시 자동으로 인스턴스화되는 개인 정적 인스턴스로 봉인 된 클래스를 작성하면 시스템의 다른 곳에서 Singleton.Instance 속성에 의해 액세스되는 실제 개체의 복사본 하나만 만드는 데 필요한 특성을 제공합니다. 어쨌든 모든 AppDomain에서 [1]

[1]

0

간결하게, 싱글 뭔가 하나의 인스턴스 만이 지금까지 주어진 범위 내에서 생성되어 있는지 확인하는 데 사용되는 디자인 패턴이다. 다른 (밀봉) 연장되는 클래스를 허용하지 않는 전용 생성자

  • 를 생성하는 오브젝트
  • 정적 인스턴스를 생성

    1. :

      이 패턴은 몇 가지 주요 개념에 의해 달성된다

    2. 정적 인 인스턴스 인 개체를 반환하는 정적 메서드 제공

    제공 한 예제 코드는 Singleton 패턴의 교과서 예제입니다. 당신이 사용하기 때문에

  • 0

    내가 생각 : 인스턴스 변수 필요가 너무 정적 수 있도록

    public static Singleton Instance() 
    

    그 기능은 정적이다.

    관련 문제