디자인 패턴 - Singelton

Created by
  • L
    Lighthouse
Created at
Category
  1. Tech
오늘은 디자인 패턴 중 하나인 Singleton 패턴에 대해 간단히 소개해드리려고 합니다.
Singleton 패턴이란?
Singleton 패턴은 클래스에 단 하나의 인스턴스만 생성되도록 하는 패턴입니다. 즉, 클래스의 인스턴스를 생성하는 방법을 제한하여 클래스에 단 하나의 인스턴스만 생성되도록 합니다.
Singleton 패턴의 장점
Singleton 패턴을 사용하면 다음과 같은 장점이 있습니다.
클래스에 단 하나의 인스턴스만 생성되도록 보장할 수 있습니다.
클래스의 인스턴스를 공유할 수 있습니다.
클래스의 인스턴스를 캡슐화할 수 있습니다.
Singleton 패턴의 예시
Singleton 패턴의 예시로 게임의 주인공을 생각해 볼 수 있습니다. 게임의 주인공은 항상 하나만 존재해야 합니다. 따라서 게임의 주인공을 Singleton 패턴으로 구현할 수 있습니다.
다음은 Singleton 패턴을 사용하여 게임의 주인공을 구현한 예시입니다.
Python Code
class Hero: __instance = None def __init__(self, name): self.name = name @classmethod def getInstance(cls): if cls.__instance is None: cls.__instance = Hero("Default") return cls.__instance hero = Hero.getInstance() print(hero.name)
위 코드에서 Hero 클래스는 __instance라는 클래스 변수를 사용하여 Singleton 패턴을 구현합니다. __instance 변수는 Hero 클래스의 인스턴스를 참조합니다.
Hero 클래스의 getInstance() 메서드는 __instance 변수가 None이면 새로운 Hero 인스턴스를 생성하고, None이 아니면 __instance 변수에 저장된 인스턴스를 반환합니다.
클라이언트 코드에서는 Hero 클래스의 getInstance() 메서드를 사용하여 Hero 클래스의 인스턴스를 얻을 수 있습니다. getInstance() 메서드는 항상 동일한 Hero 인스턴스를 반환합니다.
Singleton 패턴의 적용
Singleton 패턴은 다음과 같은 상황에서 유용하게 사용할 수 있습니다.
클래스에 단 하나의 인스턴스만 생성되도록 보장해야 하는 경우
클래스의 인스턴스를 공유해야 하는 경우
클래스의 인스턴스를 캡슐화해야 하는 경우
Singleton 패턴은 디자인 패턴 중에서도 가장 기본적인 패턴 중 하나입니다. 따라서 디자인 패턴을 학습하는 개발자라면 Singleton 패턴을 반드시 이해하고 있어야 합니다.
Singleton 패턴을 사용할 때는 다음과 같은 주의 사항을 고려해야 합니다.
Singleton 패턴을 사용하면 클래스에 단 하나의 인스턴스만 생성되므로, 클래스의 인스턴스를 여러 번 생성해야 하는 경우에는 Singleton 패턴을 사용하지 않는 것이 좋습니다.

Singleton 패턴을 사용하면 클래스의 인스턴스를 공유하므로, 인스턴스의 상태가 변경될 때는 동시성 문제가 발생할 수 있습니다. 따라서 인스턴스의 상태를 변경할 때는 동시성 문제를 고려해야 합니다.

Singleton 패턴을 사용할 때는 이러한 주의 사항을 고려하여 사용해야 합니다.
오늘 소개해드린 내용을 바탕으로 Singleton 패턴에 대한 이해를 넓혀나가시기 바랍니다. 감사합니다.