C#/수업내용
03/25 싱글턴 디자인패턴 연습
박준희
2021. 3. 25. 11:51
728x90
싱글턴
하나의 클래스가 하나의 인스턴스만 갖도록 제한, 전역범위에서 인스턴스를 엑세스 생성자를 private으로 만듦
일반적으로 Singleton 인스턴스를 클라이언트가 처음 Singleton 인스턴스를 엑세스할때 생성
Program.cs
using System;
namespace Study07
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
new App();
}
}
}
App.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
namespace Study07
{
public class App
{
//생성자
public App()
{
Console.WriteLine("App");
DataManager.GetInstance().LoadWeaponData("./weapon_data.json");
foreach(var weaponData in DataManager.GetInstance().dicWeaponDatas)
{
Console.WriteLine("{0} {1}", weaponData.Key, weaponData.Value.name);
}
}
}
}
DataManager.cs
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study07
{
public class DataManager
{
private static DataManager instance;
public Dictionary<int, WeaponData> dicWeaponDatas;
//생성자
private DataManager()
{
}
public static DataManager GetInstance()
{
if (DataManager.instance == null)
DataManager.instance = new DataManager();
return DataManager.instance;
}
public void LoadWeaponData(string path)
{
var json = File.ReadAllText(path);
var arr = JsonConvert.DeserializeObject<WeaponData[]>(json);
dicWeaponDatas = arr.ToDictionary(x => x.id);
}
}
}
WeaponData.cs
namespace Study07
{
public class WeaponData
{
public int id;
public string name;
public int grade_type;
public float damage;
public int sell_price;
}
}
Json파일
728x90