>백엔드 개발 >C++ >C에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?

C에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-03 17:57:02356검색

How to Implement the Singleton Design Pattern in C  ?

C의 싱글턴

C에서는 싱글턴 디자인 패턴을 구현하는 여러 가지 방법이 있습니다. 단일 인스턴스. 다음은 Singleton 클래스를 생성하는 두 가지 일반적인 접근 방식입니다.

포인터 반환을 사용하는 클래식 싱글톤

이 방법에서 Singleton 클래스는 해당 인스턴스에 대한 포인터를 반환합니다.

<code class="cpp">class A {
    private:
        static A* m_pA;
        A();
        virtual ~A();

    public:
        static A* GetInstance();
        static void FreeInstance();
        
        void WORK1();
        void WORK2();
        void WORK3();
};</code>

그러나 이 접근 방식은 개체에 참조가 있는 동안 FreeInstance() 메서드가 호출되는 경우 잠재적인 문제가 있습니다. 이 문제를 해결하려면 싱글톤 개체를 수동으로 해제하지 마세요.

참조 반환이 있는 싱글톤

싱글톤을 참조로 반환하는 것은 더 나은 안전성을 제공하는 또 다른 접근 방식입니다.

<code class="cpp">class A {
    private:
        static A* m_pA;
        explicit A();
        void A(const A& a);
        void A(A &a);
        const A& operator=(const A& a);
        virtual ~A();

    public:
        static A* GetInstance();
        static void FreeInstance();
        
        void WORK1();
        void WORK2();
        void WORK3();
};</code>

이 구현은 실수로 Singleton 객체를 삭제하는 것을 방지합니다.

추가 고려 사항

  • 직접 방지를 위해 생성자를 비공개로 설정합니다. 객체 생성.
  • 복사를 방지하려면 기본 복사 생성자와 할당 연산자를 재정의하세요.
  • 정적 메서드를 사용하여 Singleton 인스턴스에 액세스하면 생성과 소멸이 한 번만 보장됩니다.

싱글턴 디자인에 대한 자세한 내용과 모범 사례는 제안 리소스를 참조하세요.

  • [싱글턴: 사용 방법](https://refactoring.guru/design-patterns) /singleton)
  • [C 싱글턴 디자인 패턴](https://www.learncpp.com/cpp-tutorial/singleton-design-pattern/)

위 내용은 C에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.