프로그래밍을 하다보면 가장 많이 쓰이는 것이 아마 싱글톤 패턴 일 것이다. 싱글톤을 만드는 방법은 다양한데, 클래스마다 그것을 구현 해 주기는 귀찮다. Java같은 경우 Enum타입으로 만들면 싱클톤이 되어서 편한데, c#같은 경우에는 그런 방법이 되지 않는다. 그나마 편하게 싱글톤 클래스를 만들고 사용하기 위한 방법은 제네릭을 이용하는 것이다.
1. c# 제네릭 싱클톤 클래스
using System;
public class Singleton<T> where T : Singleton<T>, new()
{
static T mInstnace;
public static T Instance
{
get
{
if(mInstnace == null)
{
mInstnace = new T();
mInstnace.init();
}
return mInstnace;
}
}
protected virtual void init()
{
}
}
2. 사용 예
using System;
using System.Collections.Generic;
public class TextManager : Singleton<TextManager>
{
Dictionary<string, jdText> m_text_map = new Dictionary<string, jdText>();
public TextManager()
{
}
override protected void init()
{
}
public void AddText(jdText text)
{
if (!m_text_map.ContainsKey(text.text_key))
m_text_map[text.text_key] = text;
}
public string GetText(string key)
{
if (m_text_map.ContainsKey(key))
return m_text_map[key].kor;
return string.Empty;
}
}
위의 클래스는 게임 내 사용할 텍스트를 관리하는 클래스로, 싱글톤이다. 앞서 구현한 제네릭 클래스를 이용해 만들었다.
아래는 싱글톤 클래스를 사용한 예 이다.
JArray token_common = (JArray)json_object["common"];
foreach (JObject item in token_common)
{
jdText text = JsonConvert.DeserializeObject<jdText>(item.ToString());
TextManager.Instance.AddText(text);
}
'게임을 만들자 > 게임 서버(C#)' 카테고리의 다른 글
Mysql, Percentage 질의 구현하기 (0) | 2020.02.01 |
---|---|
게임 서버 DB설계 시, Tips (0) | 2020.01.30 |
파이썬으로 구글 스프레드시트 다운받고, Json으로 변경하기 (0) | 2019.12.28 |
c# 실시간 게임 서버 만들기 3 - 서버 (1) | 2019.12.22 |
c# 실시간 게임 서버 만들기 2 - 클라이언트 (2) | 2019.12.19 |