디자인 패턴: 싱글톤

6409 단어 learningbeginners
안녕 얘들아, 여기 있어줘서 고마워! 디자인 패턴을 검토하면서 몇 가지 게시물을 작성하기로 결정했습니다. 디자인 패턴은 반복되는 소프트웨어 개발 문제에 대한 일반적이고 재사용 가능한 솔루션을 제공하는 데 도움이 됩니다. 먼저 Singleton 패턴을 살펴보겠습니다.


개요


  • Definition
  • Implementation
  • Real-World Examples



  • 정의

    Singleton: a single person or thing of the kind under consideration.
    The Singleton design pattern is a creational design pattern. It refers to a class that has only one instance in existence at any given time. If we try to instantiate an instance of the Singleton class for a second time, the new variable also points to the first instance that was created earlier.
    Let's take a look at the implementation of this pattern and then talk about some problems it can help solve.


    구현

    To achieve the Singleton pattern, the class has two main characteristics:

    1. The constructor is private.
    2. There is a static method that returns the Singleton instance.

    These characteristics allow us to first create an instance for the class if it has yet to be instantiated, and then return that instance whenever the class is called for.

    Using C#, the pattern looks like this:

    using System;
    
    public class Program
    {
        public static void Main()
        {
            Singleton object1 = Singleton.Instance();
            Singleton object2 = Singleton.Instance();
            if (object1 == object2)
                Console.WriteLine("They're the same instance!");
        }
    }
    
    /// <summary>
    /// The Singleton class.
    /// </summary>
    class Singleton
    {
        private static Singleton myInstance;
    
        // 1. The constructor is private.
        private Singleton() { }
    
        // 2. Static method that returns the Singleton instance.
        public static Singleton Instance()
        {
            if (myInstance == null)
                myInstance = new Singleton();
    
            return myInstance;
        }
    }
    

    In this case, the program would write the string "They're the same instance!". You can play with this code here on .NET Fiddle




    실제 사례

    Sweet, now we're able to write a class that will only have one instance in our program at a time! What can we do with that? What kind of recurring software development problems can this pattern help solve?

    A Singleton pattern is especially useful when accessing some sort of resource that the entire application is making use of that may have issues when being accessed by more than one instance at a time (it helps solve concurrency issues). There are a lot of common development situations where this might be the case, like hardware interface access, and logging data to a file.

    In the case of hardware interface access, we may be connecting to hardware that will have concurrency issues when being accessed by multiple instances. For example, the Singleton pattern can help a printer print documents in a certain order, avoiding deadlock situations. In the case of logging data to a file, we may have multiple clients logging to a single file at the same time. The Singleton pattern can help prevent problems with concurrent access to this log file.



    면책 조항: 디자인 패턴을 학습하기 위한 많은 리소스가 있으며 다양한 방식으로 구현할 수 있습니다. 이 게시물을 마치면 더 많은 리소스를 탐색하는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기