250x250
기리도
기리도의 개발새발 개발 일지
기리도
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Unity (6)
      • 모듈식 프로그래밍 (1)
    • C# (10)
    • 자료구조,알고리즘 (2)
    • 운영체제 (10)
      • 공룡책 (3)
      • 그림으로 쉽게 배우는 운영체제(인프런 강의) (7)
    • 리팩토링 (1)
    • 네트워크 (13)
      • 네트워크 장비 (13)
    • C, C++ 문법 (1)
      • 기타 (0)
      • C (1)
      • C++ (0)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발공부
  • 프로그래밍
  • 게임개발
  • OS
  • Unity
  • 길찾기
  • 인프런
  • C#
  • 유니티
  • 브릿지
  • 네트워크
  • 네트워크 게임
  • 개발
  • 스위치
  • 운영체제
  • 통신
  • 공부
  • 탄환
  • 알고리즘
  • 네트워킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
기리도

기리도의 개발새발 개발 일지

디자인 패턴

[C#]싱글톤 디자인 패턴(Singleton Design Pattern)

2022. 6. 15. 14:03
728x90

📕싱글톤 디자인 패턴(Singleton Design Pattern)

싱글톤 패턴이란 클래스의 인스턴스를 하나만 생성해서 전역적으로 사용하게 하는 디자인 패턴이다. 싱글톤을 사용하면 해당 클래스의 인스턴스를 생성하지 않고도 외부에서 참조할 수 있기 때문에 특정 자원을 여러 클래스와 공유할 때 효과적이다.

다음은 싱글톤을 구현할 때 고려해야 할 몇 가지 사항이다.

  1. 생성자의 접근제한자는 private이어야 하며 매개 변수는 없어야 한다. 이는 외부에서 생성되는 것을 막기 위해서이다.
  2. 클래스는 상속될 수 없도록 sealed 한정자를 사용해 선언해야 한다.
  3. 싱글톤 클래스의 인스턴스를 참조하고 싶을 땐 private으로 선언한 정적 변수를 통해 참조해야 한다.
  4. 싱글톤 인스턴스를 반환할 정적 프로퍼티(혹은 메서드)를 public으로 생성한다. 생성한 프로퍼티는 싱글톤 클래스의 인스턴스가 존재하는지 확인하고, 존재한다면 싱글톤 클래스의 인스턴스를 반환한다. 만약 존재하지 않는다면 직접 인스턴스를 생성한 뒤 반환한다.

 

📖싱글톤 구현하기

namespace SingletonDemo
{
    public sealed class Singleton
    {
        private static int counter = 0;
        private static Singleton instance = null;
        public static Singleton GetInstance
        {
            get
            {
                if (instance == null)
                    instance = new Singleton();
                return instance;
            }
        }
        
        private Singleton()
        {
            counter++;
            Console.WriteLine("Counter Value " + counter.ToString());
        }
        public void PrintDetails(string message)
        {
            Console.WriteLine(message);
        }
    }
}

Singleton 클래스를 sealed로 선언한 뒤 private을 사용해 생성자를 만들었다. 외부에서 Singleton 클래스에 접근할 땐  GetInstance 프로퍼티를 호출하면 된다.

namespace SingletonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Singleton fromTeachaer = Singleton.GetInstance;
            fromTeachaer.PrintDetails("From Teacher");
            Singleton fromStudent = Singleton.GetInstance;
            fromStudent.PrintDetails("From Student");
            Console.ReadLine();
        }
    }
}

실행 결과는 다음과 같다.

Counter Value 1
From Teacher
From Student

GetInstance를 두 번 호출했는데도 싱글톤 인스턴스는 하나만 생성된 것을 볼 수 있다.


🔖인용한 사이트

https://dotnettutorials.net/lesson/singleton-design-pattern/

 

Singleton Design Pattern in C#

In this article, I am going to discuss Singleton Design Pattern in C# with Example. Singleton Design Pattern ensures that only one instance

dotnettutorials.net

 

728x90
저작자표시 (새창열림)
    기리도
    기리도
    공부한 내용을 정리해서 올리는 블로그입니다.

    티스토리툴바