반응형
오늘은 디자인 패턴중 하나인 싱글톤 패턴에 대하여 이야기 해보겠습니다.
싱글톤 패턴이란?
싱글톤 패턴은 클래스의 인스턴스가 하나만 생성되어야 함을 보장하는 디자인 패턴입니다.
하나의 클래스로부터 여러 개의 인스턴를 만드는게 아니라, 한개의 인스턴스만 만들어 사용하는것이죠.
싱글톤 패턴을 사용 할때?
싱글톤 패턴을 예로 들면, 데이터베이스 연결이나 설정 파일처럼 하나만 있어야 하는 것들에 이 패턴을 사용 하곤 합니다.
파이썬 코드로 예시를 들어보도록 하겠습니다.
- 데이터베이스에 연결을 요청하는 예시
class DatabaseConnection:
__instance = None
@staticmethod
def getInstance():
"""싱글톤 인스턴스를 얻는 메서드"""
if DatabaseConnection.__instance == None:
DatabaseConnection()
return DatabaseConnection.__instance
def __init__(self):
"""생성자에서 싱글톤 패턴을 유지하기 위해 인스턴스 확인"""
if DatabaseConnection.__instance != None:
raise Exception("이 클래스는 싱글톤입니다!")
else:
# 아래 코드는 데이터베이스 연결을 수립한다고 가정한 것입니다.
self.connection = establish_connection()
DatabaseConnection.__instance = self
위의 코드를 보면, getInstance 라는 메서드가 있습니다.
이 메서드를 통해 싱글톤 인스턴스에 접근 할 수 있습니다.
인스턴스가 이미 있다면 그것을 반환 하고, 아니면 새로운 인스턴스를 만들어서 반환합니다.
그리고 만약 실수로 두번째 인스턴스를 만들려고 하면, init 메서드가 이미 인스턴스가 있는지 확인하고, 있다면 예외를 발생 시킵니다.
이렇게 싱글톤 패턴이 제대로 유지 되도록 보장 합니다.
데이터베이스 연결은 일반적으로 어플리케이션에서 적은 횟수로 수행되어야 합니다.
여러번의 연결은 시스템 리소스를 낭비하고, 연결 수에 따른 제한을 초과할 수 있습니다.
따라서 데이터베이스 연결은 객체를 싱글톤으로 만들어서 어플리케이션 전체에서 하나의 연결을 공유하도록 하여,
리소스를 효율적으로 사용할 수 있습니다.
이렇게 싱글톤 패턴은 리소스를 효율적으로 관리하고, 코드의 안정성을 높일 수 있습니다.
728x90
'디자인패턴' 카테고리의 다른 글
[ 디자인패턴 ] 추상 팩토리 패턴 (Abstract Factory) (1) | 2023.08.11 |
---|---|
[ 디자인 패턴 ] 팩토리 메서드 패턴 (Factory Method) (1) | 2023.08.06 |
[ 디자인패턴 ] 디자인 패턴이란? (0) | 2023.08.05 |