싱글톤 패턴은 한 개의 인스턴스만 생성하고, 어디서든 그 인스턴스에 접근할 수 있는 디자인 패턴입니다.
전역적인 상태나 리소스에 접근: 싱글톤은 어디서든 접근할 수 있는 전역적인 상태나 리소스에 대한 중앙 집중적인 접근을 제공합니다. 예를 들어, 게임의 설정, 오디오 관리자, 이벤트 매니저 등을 싱글톤으로 구현할 수 있습니다. 한 가지의 상태로, 하나가 주가 되어서 관리했으면 좋겠다!
중복 인스턴스 방지: 싱글톤 패턴을 사용하면 오직 한 개의 인스턴스만 생성되므로, 중복 인스턴스를 방지할 수 있습니다. 이는 리소스 낭비나 예기치 않은 동작을 방지하는 데 도움이 됩니다.
객체 간 편한 통신: 싱글톤 인스턴스는 어디서든 접근할 수 있으므로, 객체 간의 통신이 편리해집니다. 다른 객체에서 싱글톤 인스턴스를 사용해 데이터를 공유하거나 메서드를 호출할 수 있습니다. // 슈퍼싱글톤 → 단일책임원칙 망가짐 → 유지보수성 떨어지고, 결합도 높아짐
유지보수 및 확장성: 싱글톤 패턴은 코드의 유지보수성과 확장성을 향상시킵니다. 인스턴스에 대한 접근이 중앙 집중화되므로, 코드의 변경이나 기능의 추가/변경이 용이해집니다. 또한, 싱글톤 인스턴스를 사용하는 객체들 사이의 결합도를 낮출 수 있어 유지보수성을 향상시킵니다.
싱글톤 예시
public class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject); // 중복 인스턴스가 생성될 경우 제거
}
}
}
씬 전환 싱글톤
public class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
void Awake() // 게임오브젝트가 처음으로 켜진 그 순간
{
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject); // 씬 전환 시 파괴되지 않도록 설정
}
else
{
Destroy(gameObject); // 중복 인스턴스가 생성될 경우 제거
}
}
public void Init(){
// 초기 세팅
}
}