728x90
목차
싱글톤(Singleton)
싱글톤 디자인 패턴은 클래스의 인스턴스가 프로그램 전체에서 단 하나만 생성되어 사용되도록 하는 디자인 패턴이다. 이 패턴의 주된 목적은 한 클래스에 대한 단일 인스턴스만을 생성하고, 그 인스턴스에 대한 전역 접근점을 제공하는 것이다.
패턴명인 "싱글톤(Singleton)"은 '하나의 구성 요소' 또는 '단일체'라는 의미의 영어 단어에서 유래했다. 이는 클래스의 인스턴스가 단 하나만 존재해야 한다는 패턴의 특징을 직관적으로 설명해 준다.
싱글톤 패턴 미적용 예시
싱글톤 패턴을 적용하지 않았을 때의 문제점을 보여주는 C# 코드는 다음과 같다.
csharpCopy code
class DatabaseConnector
{
public DatabaseConnector()
{
// 데이터베이스 연결을 설정한다.
}
public void Connect()
{
// 데이터베이스에 연결하는 로직
}
}
class Program
{
static void Main(string[] args)
{
DatabaseConnector connector1 = new DatabaseConnector();
DatabaseConnector connector2 = new DatabaseConnector();
// 여기서 connector1과 connector2는 서로 다른 인스턴스다.
}
}
위 예시에서 DatabaseConnector 클래스의 인스턴스를 필요할 때마다 새로 생성한다. 이렇게 되면 동일한 데이터베이스에 여러 번 연결하는 인스턴스가 생성될 수 있으며, 이는 자원의 낭비를 초래하고, 예상치 못한 오류의 원인이 될 수 있다.
싱글톤 패턴 적용 예시
싱글톤 패턴을 적용한 C# 코드 예시는 다음과 같다.
csharpCopy code
public class DatabaseConnector
{
private static DatabaseConnector instance;
// 생성자를 private으로 선언하여 외부에서 인스턴스를 직접 생성할 수 없게 한다.
private DatabaseConnector()
{
// 데이터베이스 연결을 설정한다.
}
// 인스턴스에 접근하기 위한 public static 메소드
public static DatabaseConnector GetInstance()
{
// 인스턴스가 생성되지 않았다면 새로 생성한다.
if (instance == null)
{
instance = new DatabaseConnector();
}
return instance;
}
public void Connect()
{
// 데이터베이스에 연결하는 로직
}
}
class Program
{
static void Main(string[] args)
{
DatabaseConnector connector1 = DatabaseConnector.GetInstance();
DatabaseConnector connector2 = DatabaseConnector.GetInstance();
// 여기서 connector1과 connector2는 동일한 인스턴스다.
}
}
싱글톤 패턴을 적용하면, DatabaseConnector 클래스의 인스턴스는 프로그램 전체에서 하나만 생성되며, 이 인스턴스에 대한 전역 접근이 가능하다. 이로 인해 자원의 낭비를 방지하고, 데이터베이스 연결과 같은 중요한 작업에서 일관성을 유지할 수 있다.
'컴퓨터 과학 > 디자인패턴' 카테고리의 다른 글
[디자인패턴] 구조 패턴(2) : 컴포지트(Composite) (1) | 2024.03.24 |
---|---|
[디자인패턴] 구조 패턴(1) : 어댑터(Adapter) (1) | 2024.03.24 |
[디자인패턴] 생성 패턴(5) : 프로토타입(Prototype) (0) | 2024.03.24 |
[디자인패턴] 생성 패턴(4) : 빌더(Builder) (0) | 2024.03.24 |
[디자인패턴] 생성 패턴(3) : 팩토리 메서드(Factory Method) (0) | 2024.03.24 |