3

이 질문에는 이미 답변이 있습니다.

싱글 톤은 객체의 인스턴스 하나만 허용한다는 것을 알고 있습니다. 싱글 톤에서 선언 된 각 메서드는이 개체에서만 작동합니다. 같은 목표를 달성 할 수있는 전 지구적인 목표를 단순히 선언하지 않는 이유는 무엇입니까?

나는 확실히 뭔가 잊고있다. 싱글 톤 (singleton)이 존재한다면 특정 메커니즘을 실현하기 위해 특정 용도 또는 도움이 있어야합니다.

예를 들면 :

class Singleton
{
public:
    static Singleton& Instance()
    {
        static Singleton sg;
        return sg;
    }

    void function();
};

같은 것입니다 :

class NotSingleton
{
public:
    NotSingleon();
    ~NotSingleton()
    void function();
};
NotSingleton nsg;

그러나 두 가지 이상의 인스턴스를 사용하는 것을 막을 수있는 방법은 없습니다.NotSingleton


  • SO 사용자는 기억하지 못하지만 누군가가 멀티 스레드 환경에서 더 안전하다고 말했습니다. - Papipone
  • 또한 전역 변수를 사용하는 경우 프로그램이 시작될 때이 객체를 초기화해야합니다. 싱글 톤을 사용한다면 처음 사용할 때까지 싱글 톤을 생성 할 수 있습니다. 극단적 인 상황에서는 프로그램이 끝날 때까지 사용하지 않아도되므로 싱글 톤을 전혀 만들 필요가 없습니다. 따라서 Singleton을 사용하면 필요할 때만 작성할 수 있습니다. 둘째, 다중 스레드 프로그램에서 전역 변수에 직접 액세스하면 디버그하기 어려운 문제가 발생할 수 있습니다. - Jiahao

1 답변


3

Singleton은 하나 이상의 객체를 생성하고 싶지 않을 때 사용됩니다. 싱글 톤 클래스는 하나 이상의 객체가 생성되지 않도록합니다. 그러나 전역 개체를 사용한다고해서이를 보장 할 수는 없습니다.

Class Singleton{
public static Singleton object==null;



  public void singleton(){
    if(object==null)
       object = new Singleton();
    return object;
    }

    }

이 클래스는 둘 이상의 객체를 만들지 않습니다. 이것이 Singleton 클래스의 목적입니다.


  • 싱글 톤 패턴의 원래 목적에 대해 당신은 절대적으로 맞습니다. 그러나 내가 본 코드의 대부분에서 실제로 전역 변수를 대체하는 데 사용됩니다. - Frank Puffer
  • 아마 prople이 개념에 익숙하지 않기 때문일 것입니다. - Usama Alvi
  • 이것은 잘못된 것입니다. 구현시 항상 하나의 인스턴스가 유지되도록 보장합니까? - kadina

연결된 질문


관련된 질문

최근 질문