디자인패턴에서 생성패턴의 하나인 싱글톤.
수업에서 계속 다뤄 구조와 의미는 알지만, 스스로 싱글톤이 뭐야?라고 했을 때 쉽게 대답하기 어려웠다.
다른 디자인패턴을 공부하기 전에 개념적으로 확실히 하고 싶어 다시 공부하며 복습하였다.
싱글톤(Singleton)
한 클래스가 한 개의 인스턴스만 갖도록 제한.
프로그램 시작부터 종료까지 동일한 인스턴스로 반환되어 전역 범위에서 접근 가능하게 하는 패턴이다.
중앙에서 관리 혹은 정보 공유가 필요할 때 주로 쓰인다.
장점
하나의 인스턴스를 공유하며 사용하기 때문에 생성 비용이 줄어듦
단점
의존성이 높아짐 - 독립적인 테스트가 어려워짐
의존성 주입
결합을 느슨하게 만들어줌
장점
모듈들을 쉽게 교체 가능한 구조가 되어 테스트가 쉬워짐
의존성 방향이 일관됨
쉽게 추론 가능
모듈 간 관계 명확
단점
클래스 수가 늘어나 복잡성 증가
런타임 페널티가 생기기도 함
원칙
상위 모듈은 하위 모듈에서 어떠한 것도 가져올 수 없음
둘 다 추상화에 의존, 추상화는 세부 사항에 의존x
(C#) 예시
일반적으로 다음과 같은 형태로 제작한다.
클래스 내부에 private static instance변수와 해당 클래스의 인스턴스를 생성하는 메서드를 작성한다.
인스턴스를 반환하는 메서드를 public static으로 선언하여 외부에서 접근 가능하게 만든다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataManager
{
private static DataManager instance = new DataManager();
private DataManager()
{
}
public static DataManager GetInstance()
{
return DataManager.instance;
}
}
'CS > 디자인패턴' 카테고리의 다른 글
[CS : 디자인패턴] 팩토리(Factory)패턴 (0) | 2023.11.16 |
---|---|
[CS : 디자인패턴] 빌더(Builder)패턴 (0) | 2023.04.28 |
[CS : 디자인패턴] 플라이웨이트(Flyweight) (0) | 2023.04.15 |